05398a74f0
L'ajout de stress prennait le stress d'un personnage ouvert au lieu de la saisie dans la fenêtre d'ajout de stress
72 lines
2.2 KiB
JavaScript
72 lines
2.2 KiB
JavaScript
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;
|
|
}
|
|
};
|
|
}
|
|
|
|
} |