import { ITEM_TYPES } from "./item.js";
import { RdDCombatManager } from "./rdd-combat.js";

export const CATEGORIES_COMPETENCES_CREATURES = {
  "generale": { base: 0, label: "Générale" },
  "naturelle": { base: 0, label: "Arme naturelle" },
  "melee": { base: 0, label: "Mêlée" },
  "parade": { base: 0, label: "Parade" },
  "tir": { base: 0, label: "Tir" },
  "lancer": { base: 0, label: "Lancer" },
  "possession": { base: 0, label: "Possession" },
}

/* -------------------------------------------- */
export class RdDItemCompetenceCreature extends Item {

  /* -------------------------------------------- */
  static setRollDataCreature(rollData) {
    rollData.carac = { "carac_creature": { label: rollData.competence.name, value: rollData.competence.system.carac_value } }
    rollData.competence.system.defaut_carac = "carac_creature"
    rollData.selectedCarac = rollData.carac.carac_creature
    rollData.arme = RdDItemCompetenceCreature.armeCreature(rollData.competence);
  }

  /* -------------------------------------------- */
  static armeCreature(item) {
    const categorieAttaque = RdDItemCompetenceCreature.getCategorieAttaque(item)
    if (categorieAttaque != undefined) {
      // cloner pour ne pas modifier la compétence
      return foundry.utils.mergeObject(item, {
          action: item.isCompetencePossession() ? 'possession' : 'attaque',
          system: {
            competence: item.name,
            cac: categorieAttaque == "naturelle" ? "naturelle" : "",
            niveau: item.system.niveau,
            initiative: RdDCombatManager.calculInitiative(item.system.niveau, item.system.carac_value),
            equipe: true,
            resistance: 100,
            dommagesReels: item.system.dommages,
            penetration: 0,
            force: 0,
            rapide: true,
          }
        }, { inplace: false, });
    }
    return undefined;
  }

  /* -------------------------------------------- */
  static isAttaque(item) {
    if (item.type == ITEM_TYPES.competencecreature) {
      switch (item.system.categorie) {
        case "melee":
        case "tir":
        case "lancer":
        case "naturelle":
        case "possession":
          return true
      }
    }
    return false
  }

  static getCategorieAttaque(item) {
    if (item.type == ITEM_TYPES.competencecreature) {
      switch (item.system.categorie) {
        case "melee":
        case "tir":
        case "lancer":
        case "naturelle":
        case "possession":
        case "parade":
          return item.system.categorie
      }
    }
    return undefined
  }

  static isDommages(item) {
    if (item.type == ITEM_TYPES.competencecreature) {
      switch (item.system.categorie) {
        case "melee":
        case "tir":
        case "lancer":
        case "naturelle":
          return true
      }
    }
    return false
  }

  static isParade(item) {
    if (item.type == ITEM_TYPES.competencecreature) {
      switch (item.system.categorie) {
        case "melee":
        case "naturelle":
        case "parade":
          return true
      }
    }
    return false
  }

}