Begin work on the custom editor for dice
This commit is contained in:
parent
36e3a551b8
commit
0deda3235a
6 changed files with 145 additions and 4 deletions
44
module/dialogs/DiceList.mjs
Normal file
44
module/dialogs/DiceList.mjs
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
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: 400,
|
||||
height: 400,
|
||||
submitOnClose: true,
|
||||
});
|
||||
opts.classes.push(`dotdungeon`);
|
||||
return opts;
|
||||
};
|
||||
|
||||
async getData() {
|
||||
const ctx = await super.getData();
|
||||
ctx.dice = this.dice;
|
||||
return ctx;
|
||||
};
|
||||
|
||||
async _updateObject(event, formData) {
|
||||
console.log(event, formData);
|
||||
};
|
||||
|
||||
addDie() {
|
||||
this.dice.push({
|
||||
count: 1,
|
||||
sides: 2,
|
||||
repeat: 1,
|
||||
id: randomID(),
|
||||
});
|
||||
this.render();
|
||||
};
|
||||
};
|
||||
45
module/dialogs/GenericDialog.mjs
Normal file
45
module/dialogs/GenericDialog.mjs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import DOTDUNGEON from "../config.mjs";
|
||||
|
||||
export class GenericDialog extends FormApplication {
|
||||
|
||||
#propogatedSettings = [
|
||||
`devMode`,
|
||||
];
|
||||
|
||||
async getData() {
|
||||
const ctx = {};
|
||||
|
||||
// Send all of the settings that sheets need into their context
|
||||
ctx.settings = {};
|
||||
for (const setting of this.#propogatedSettings) {
|
||||
ctx.settings[setting] = game.settings.get(`dotdungeon`, setting);
|
||||
};
|
||||
|
||||
ctx.isGM = game.users.current.hasRole(CONST.USER_ROLES.ASSISTANT);
|
||||
|
||||
ctx.meta = {
|
||||
expanded: this._expanded,
|
||||
};
|
||||
|
||||
ctx.config = DOTDUNGEON;
|
||||
ctx.icons = CONFIG.CACHE.icons;
|
||||
|
||||
return ctx;
|
||||
};
|
||||
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
if (!this.isEditable) return;
|
||||
console.debug(`.dungeon | Generic dialog adding listeners`);
|
||||
|
||||
html.find(`[data-action]`)
|
||||
.on(`click`, this._handleActionClick.bind(this));
|
||||
};
|
||||
|
||||
_handleActionClick($e) {
|
||||
const data = $e.currentTarget.dataset;
|
||||
if (!this[data.action]) return;
|
||||
this[data.action].bind(this)($e);
|
||||
};
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue