60 lines
1.2 KiB
JavaScript
60 lines
1.2 KiB
JavaScript
import { GenericDialog } from "./GenericDialog.mjs";
|
|
|
|
export class DiceList extends GenericDialog {
|
|
|
|
constructor(mobActor) {
|
|
super({}, { title: `${mobActor.name}'s Dice List` });
|
|
this.actor = mobActor;
|
|
this.dice = this.actor.system.dice.map((d) => ({
|
|
...d,
|
|
id: randomID(),
|
|
}));
|
|
};
|
|
|
|
static get defaultOptions() {
|
|
const opts = mergeObject({
|
|
...super.defaultOptions,
|
|
template: `systems/dotdungeon/templates/dialogs/diceList.hbs`,
|
|
width: 275,
|
|
height: 400,
|
|
submitOnClose: false,
|
|
resizable: true,
|
|
});
|
|
opts.classes?.push(`dotdungeon`);
|
|
return opts;
|
|
};
|
|
|
|
async getData() {
|
|
const ctx = await super.getData();
|
|
ctx.dice = this.dice;
|
|
console.debug(`DiceList context`, ctx);
|
|
return ctx;
|
|
};
|
|
|
|
async _updateObject(_event, formData) {
|
|
const newDice = this.dice.map(d => {
|
|
return {
|
|
count: formData[`${d.id}.count`],
|
|
sides: formData[`${d.id}.sides`],
|
|
repeat: formData[`${d.id}.repeat`],
|
|
};
|
|
});
|
|
await this.actor.update({ "system.dice": newDice });
|
|
};
|
|
|
|
addDie() {
|
|
this.dice.push({
|
|
count: 1,
|
|
sides: 2,
|
|
repeat: 1,
|
|
id: randomID(),
|
|
});
|
|
this.render();
|
|
};
|
|
|
|
deleteDie($e) {
|
|
const data = $e.currentTarget.dataset;
|
|
this.dice = this.dice.filter(d => d.id !== data.id);
|
|
this.render();
|
|
};
|
|
};
|