import { RDD_CONFIG } from "../constants.js"
import { ATTAQUE_TYPE_MELEE } from "../item/arme.js"
import { RdDEmpoignade } from "../combat/rdd-empoignade.js"
import { ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE } from "./roll-constants.mjs"
import { PART_ATTAQUE } from "./roll-part-attaque.mjs"
import { RollPartCheckbox } from "./roll-part-checkbox.mjs"
import { RollPart } from "./roll-part.mjs"

const EMPOIGNADE = "empoignade"

export class RollPartEmpoignade extends RollPartCheckbox {

  get code() { return EMPOIGNADE }

  get rollTypes() { return [ROLL_TYPE_ATTAQUE, ROLL_TYPE_DEFENSE] }
  isValid(rollData) {
    return RdDEmpoignade.isCombatantEmpoignade(rollData.ids.opponentId, rollData.ids.opponentTokenId) &&
      !RdDEmpoignade.isCombatantEmpoignade(rollData.ids.actorId, rollData.ids.actorTokenId)
  }

  visible(rollData) {
    return rollData.type.current == ROLL_TYPE_ATTAQUE &&
      ATTAQUE_TYPE_MELEE.includes(rollData.current[PART_ATTAQUE].main) &&
      RdDEmpoignade.isCombatantEmpoignade(rollData.ids.opponentId, rollData.ids.opponentTokenId) &&
      !RdDEmpoignade.isCombatantEmpoignade(rollData.ids.actorId, rollData.ids.actorTokenId) &&
      !RdDEmpoignade.isEmpoignadeEnCours(rollData.active.actor)
  }

  getCheckboxIcon(rollData) { return `<img src="${RDD_CONFIG.icons.empoignade}">` }
  getCheckboxLabel(rollData) { return "vs. empoigneur" }
  getCheckboxValue(rollData) { return 4 }
}
