import { Misc } from "./misc.js";

/**
 * Extend the base Dialog entity by defining a custom window to perform roll.
 * @extends {Dialog}
 */
export class RdDRollDialogEthylisme extends Dialog {

  /* -------------------------------------------- */
  constructor(html, rollData, actor, onRoll) {
    // Common conf
    let dialogConf = {
      title: "Test d'éthylisme",
      content: html,
      default: "rollButton",
      buttons: { "rollButton": { label: "Test d'éthylisme", callback: html => this.onButton(html) } }
    };
    let dialogOptions = { classes: ["rdddialog"], width: 400, height: 'fit-content', 'z-index': 99999 }
    super(dialogConf, dialogOptions)

    //console.log("ETH", rollData);
    this.onRoll = onRoll;
    this.rollData = rollData;
    this.actor = actor;
  }

  async onButton(html) {
    this.onRoll(this.rollData);
  }

  /* -------------------------------------------- */
  activateListeners(html) {
    super.activateListeners(html);

    this.bringToTop(); // Ensure top level
    // Get the rollData stuff
    var rollData = this.rollData;
    var dialog = this;

    // Setup everything onload
    $(function () {
      $("#forceAlcool").val(Misc.toInt(rollData.forceAlcool));
      dialog.updateRollResult();
    });

    // Update !
    html.find('#forceAlcool').change((event) => {
      rollData.forceAlcool = Misc.toInt(event.currentTarget.value); // Update the selected bonus/malus
      dialog.updateRollResult();
    });
  }
  async updateRollResult() {
    
    // Mise à jour valeurs
    $("#roll-param").text(this.rollData.vie + " / " + Misc.toSignedString(Number(this.rollData.etat) + Number(this.rollData.forceAlcool) + this.rollData.diffNbDoses));
    $(".table-resolution").remove();
  }

}