import { Grammar } from "./grammar.js"; import { Misc } from "./misc.js"; import { RdDUtility } from "./rdd-utility.js"; export class DialogFabriquerPotion extends Dialog { /* -------------------------------------------- */ static async create(actor, item, dialogConfig) { let potionData = DialogFabriquerPotion.prepareData(actor, item); let conf = { title: `Fabriquer une potion de ${potionData.data.categorie}`, content: await renderTemplate(dialogConfig.html, potionData), default: potionData.buttonName, }; let options = { classes: ["dialogfabriquerpotion"], width: 600, height: 160, 'z-index': 99999 }; mergeObject(options, dialogConfig.options ?? {}, { overwrite: true }) const dialog = new DialogFabriquerPotion(actor, potionData, conf, options); dialog.render(true); return dialog; } /* -------------------------------------------- */ static prepareData(actor, item) { let potionData = duplicate(Misc.data(item)); potionData.nbBrinsSelect = RdDUtility.buildListOptions( 1, potionData.data.quantite); potionData.nbBrins = potionData.data.quantite; potionData.buttonName = "Fabriquer"; return potionData; } /* -------------------------------------------- */ constructor(actor, potionData, conf, options) { conf.buttons = { [potionData.buttonName]: { label: potionData.buttonName, callback: it => { this.fabriquer(); } } }; super(conf, options); this.actor = actor; this.potionData = potionData; } /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); html.find("#nbBrins").change(event => { this.potionData.nbBrins = Misc.toInt(event.currentTarget.value); }); } /* -------------------------------------------- */ async fabriquer() { this.actor.fabriquerPotion( this.potionData ); this.close(); } }