Work towards better editing of embedded items

This commit is contained in:
Oliver-Akins 2024-01-11 23:20:35 -07:00
parent 0496be73b0
commit 10dcec3bd7
12 changed files with 136 additions and 77 deletions

View file

@ -15,11 +15,10 @@ export class ActorHandler extends Actor {
};
async openEmbeddedSheet($event) {
console.log(`openEmbeddedSheet`)
if (this.fn?.openEmbeddedSheet) {
this.fn.openEmbeddedSheet.bind(this)($event);
} else {
const data = $event.currentTarget.dataset;
const data = $event.target.dataset;
let item = await fromUuid(data.embeddedEdit);
item?.sheet.render(true);
};
@ -35,9 +34,8 @@ export class ActorHandler extends Actor {
this.fn.genericEmbeddedDelete.bind(this)($event);
};
async createCustomSpell() {
async createCustomSpell($event) {
if (!this.fn?.createCustomSpell) return;
this.fn.createCustomSpell.bind(this)();
this.sheet.render(true);
this.fn.createCustomSpell.bind(this)($event);
};
};

View file

@ -9,7 +9,7 @@ export class PlayerActor {
/** @this {Actor} */
static async genericEmbeddedDelete($event) {
let data = $event.delegateTarget.dataset;
let data = $event.currentTarget.dataset;
let item = await fromUuid(data.embeddedId);
if (!item) {
@ -36,6 +36,20 @@ export class PlayerActor {
});
};
/** @this {Actor} */
static async createCustomItem(defaults) {
let items = await this.createEmbeddedDocuments(`Item`, defaults);
if (items.length == 0) {
throw new Error();
};
this.sheet.render();
if (game.settings.get(`dotdungeon`, `openEmbeddedOnCreate`)) {
for (const item of items) {
item.sheet.render(true);
};
};
};
/** @this {Actor} */
static async createCustomSpell() {
let items = await this.createEmbeddedDocuments(

View file

@ -15,6 +15,7 @@ export default {
// Simple helpers
"dd-stringify": v => JSON.stringify(v, null, ` `),
"dd-empty": v => v.length == 0,
// Logic helpers
"eq": (a, b) => a == b,
@ -26,5 +27,5 @@ export default {
"nand": (a, b) => !(a && b),
"xor": (a, b) => (a || b) && !(a && b),
"xnor": (a, b) => !((a || b) && !(a && b)),
"defined": v => v != null
"defined": v => v != null,
};

View file

@ -20,8 +20,9 @@ export class PlayerSheet extends GenericActorSheet {
console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`);
html.find(`.add-spell`).on(`click`, this.actor.createCustomSpell.bind(this.actor));
html.find(`[data-embedded-update]`)
.on(`change`, this.actor.genericEmbeddedUpdate.bind(this.actor));
// TODO: Apparently the `change` event is bad to use in Foundry
// html.find(`[data-embedded-update]`)
// .on(`change`, this.actor.genericEmbeddedUpdate.bind(this.actor));
html.find(`[data-embedded-delete]`)
.on(`click`, this.actor.genericEmbeddedDelete.bind(this.actor));
html.find(`[data-embedded-edit]`)
@ -38,6 +39,7 @@ export class PlayerSheet extends GenericActorSheet {
ctx.computed = {
canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM,
canAddAspect: ctx.items.aspect.length == 0,
};
console.log(ctx)