import { Misc } from "./misc.js"; export class DialogStress extends Dialog { static async distribuerStress() { let dialogData = { motif: "Motif", stress: 10, immediat: false, actors: game.actors.filter(actor => actor.hasPlayerOwner && actor.isPersonnage()) .map(actor => { let actorData = duplicate(Misc.data(actor)); actorData.selected = actor.hasPlayerOwner; return actorData; }) }; const html = await renderTemplate("systems/foundryvtt-reve-de-dragon/templates/dialog-stress.html", dialogData); new DialogStress(dialogData, html) .render(true); } constructor(dialogData, html) { let options = { classes: ["DialogStress"], width: 400, height: 320, 'z-index': 99999 }; let conf = { title: "Donner du stress", content: html, buttons: { "Stress": { label: "Stress !", callback: it => { this._onStress(); } } } }; super(conf, options); this.dialogData = dialogData; } async _onStress() { this.validerStress(); const compteur = this.dialogData.immediat ? 'experience' : 'stress'; const stress = this.dialogData.stress; const motif = this.dialogData.motif; this.dialogData.actors.filter(it => it.selected) .map(it => game.actors.get(it._id)) .forEach(actor => actor.distribuerStress(compteur, stress, motif)); } validerStress() { this.dialogData.motif = $("form.rdddialogstress input[name='motif']").val(); this.dialogData.stress = $("form.rdddialogstress input[name='stress']").val(); this.dialogData.immediat = $("form.rdddialogstress input[name='immediat']").prop("checked");; } /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); html.find(".select-actor").change((event) => this.onSelectActor(event)); } async onSelectActor(event) { event.preventDefault(); const options = event.currentTarget.options; for (var i = 0; i < options.length; i++) { // looping over the options const actorId = options[i].attributes["data-actor-id"].value; const actor = this.dialogData.actors.find(it => it._id == actorId); if (actor) { actor.selected = options[i].selected; } }; } }