import { Component, Input } from '@angular/core';
import { DetailsService } from 'src/services/details/details.service';

@Component({
  selector: 'conditions-details',
  templateUrl: './conditions-details.component.html',
  styleUrl: './conditions-details.component.scss',
})
export class ConditionsDetailsComponent {
  public constructor(public detailsAccessor: DetailsService) {}

  @Input() public conditions: string[] = [];
  public currentCondition: string = '';

  public conditionOptions: string[] = [
    'blinded',
    'charmed',
    'deafened',
    'frightened',
    'grappled',
    'incapacitated',
    'invisible',
    'paralyzed',
    'petrified',
    'poisoned',
    'prone',
    'restrained',
    'stunned',
    'unconscious',
  ];

  // public conditionDescriptions: any = {
  //   Betäubt: [
  //     'Ein betäubter Charakter ist kampfunfähig und kann somit keine Aktion und Reaktion ausführen.',
  //     'Er scheitert automatisch bei Stärke- und Geschicklichkeitswürfen.',
  //     'Angriffe gegen ihn haben Vorteil.',
  //   ],
  //   Bewusstlos: [
  //     'Ein bewusstloser Charakter ist kampfunfähig und kann somit keine Aktion und Reaktion ausführen.',
  //     'Er lässt fallen, was er in der Hand hält und stürzt zu Boden',
  //     'Er scheitert automatisch bei Stärke- und Geschicklichkeitsrettungswürfen',
  //     'Angriffe gegen ihn haben Vorteil.',
  //     'Jeder Angriff, der ihn trifft, ist ein kritischer Treffer, wenn der Angreifer innerhalb von 1,5 Metern von dem Charakter ist.',
  //   ],
  //   Bezaubert: [
  //     'Ein bezauberter Charakter kann den Bezauberer weder angreifen, noch als Ziel für schädigende Fähigkeiten oder Zauber auswählen.',
  //     'Der Bezauberer ist im Vorteil bei Fähigkeitswürfen, die sich auf die Interaktion mit dem bezauberten Charakter beziehen.',
  //   ],
  //   Blind: [
  //     'Ein blinder Charakter kann nicht sehen. Er scheitert automatisch bei allen Attributwürfen, die auf Sicht basieren.',
  //     'Angriffe gegen ihn haben Vorteil, seine Angriffe wiederum haben Nachteil.',
  //   ],
  //   Festgesetzt: [
  //     'Die Bewegungsrate eines festgesetzten Charakters wird auf 0 gesetzt.',
  //     'Angriffe gegen ihn haben Vorteil, seine Angriffe wiederum haben Nachteil.',
  //     'Er scheitert automatisch bei allen Geschicklichkeitsrettungswürfen.',
  //   ],
  //   Gelähmt: [
  //     'Ein gelähmter Charakter ist kampfunfähig und kann somit keine Aktion und Reaktion ausführen.',
  //     'Er kann sich weder bewegen noch sprechen',
  //     'Er scheitert automatisch bei Stärke- und Geschicklichkeitsrettungswürfen.',
  //     'Angriffe gegen ihn haben Vorteil.',
  //     'Jeder Angriff, der ihn trifft, ist ein kritischer Treffer, wenn der Angreifer innerhalb von 1,5 Metern von dem Charakter ist.',
  //   ],
  //   Gepackt: [
  //     'Die Bewegungsrate eines festgesetzten Charakters wird auf 0 gesetzt.',
  //     'Der Zustand endet, wenn die packende Kreatur kampfunfähig wird',
  //     'Der Zustand endet auch, wenn ein Effekt die gepackte Kreatur aus der Reichweite der packenden Kreatur oder des packenden Effekts zieht. ',
  //   ],
  //   Kampfunfähig: [
  //     'Ein kampfunfähiger Charakter kann keine Aktionen oder Reaktionen ausführen.',
  //   ],
  //   Liegend: [
  //     'Ein liegender Charakter kann sich nur kriechend bewegen.',
  //     'Alle seine Angriffe haben Nachteil.',
  //     'Alle Angriffe gegen ihn haben Vorteil, wenn der Angreifer innerhalb von 1,5 Metern von dem Charakter ist, ansonsten haben sie nachteil.',
  //   ],
  //   Taub: [
  //     'Ein tauber Charakter kann nicht hören und scheitert automatisch bei allen Attributwürfen, die auf Hören basieren.',
  //   ],
  //   Unsichtbar: [
  //     'Ein unsichtbarer Charakter kann nicht gesehen werden, außer durch magische Mittel oder besondere Sinne.',
  //     'Wenn er sich verbergen will, gilt er als komplett verschleiert, kann sich jedoch durch Geräusche und Fußspuren verraten.',
  //     'Er hat Vorteil bei Angriffen, Angriffe gegen ihn wiederum sind im Nachteil.',
  //   ],
  //   Verängstigt: [
  //     'Ein verängstigter Charakter hat Nachteil bei allen Attributswürfen und Angriffen, solange die Quelle seiner Angst in Sichtweite ist.',
  //     'Er kann nicht freiwillig näher an die Quelle seiner Angst heranrücken.',
  //   ],
  //   Vergiftet: [
  //     'Ein vergifteter Charakter hat Nachteil bei allen Attributs- und Angriffswürfen.',
  //   ],
  //   Versteinert: [
  //     'Ein versteinerter Charakter wird mit ihrere gesamten nicht-magischen Ausrüstung versteinert und sein Gewicht verzehnfacht sich.',
  //     'Der CHarakter ist kampfunfähig, kann also weder Aktion noch Reaktion ausführen, sich bewegen, sprechen oder die Umgebung wahrnehmen.',
  //     'Angriffe gegen ihn sind im Vorteil',
  //     'Er scheitert automatisch bei allen Stärke- und Geschicklichkeitswürfen.',
  //     'Er ist immun gegen jeglichen Schaden',
  //     'Er ist immun gegen Gifte und Krankheiten, außer gegen solche, die sich bereits vorher in ihm befunden HttpBackend. Diese werden aufgehalten, nicht neutralisiert.',
  //   ],
  // };

  public notUsedConditions(): string[] {
    return this.conditionOptions.filter(
      (condition) => !this.conditions.includes(condition),
    );
  }

  public addCondition(): void {
    this.conditions.push(this.currentCondition);
    this.currentCondition = '';
  }

  public removeCondition(index: number): void {
    this.conditions.splice(index, 1);
  }

  public close(result: string): void {
    if (result === 'update') {
      this.detailsAccessor.closePanel(result, this.conditions);
    } else if (result === 'cancel') {
      this.detailsAccessor.closePanel({ state: result });
    }
  }

  public toggleAcordion(event: any): void {
    if (event.target.classList.contains('accordion')) {
      event.target.classList.toggle('active');
      var panel = event.target.nextElementSibling;
      if (panel.style.maxHeight) {
        panel.style.maxHeight = null;
      } else {
        panel.style.maxHeight = panel.scrollHeight + 'px'; //Hier ansetzen um es später scrollable zu machen
      }
    }
  }
}
