1efdca028c
Commande: /stress Ouvre une fenêtre pour gérer finement le stress (ou l'expérience) Commande: /stress <v> <motif> <nom> Stress donné à un acteur/joueur avec un nom proche Notifications des joueurs qui reçoivent du 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 = $("[name='motif']").val();
|
|
this.dialogData.stress = $("[name='stress']").val();
|
|
this.dialogData.immediat = $("[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;
|
|
}
|
|
};
|
|
}
|
|
|
|
} |