Work towards better editing of embedded items
This commit is contained in:
parent
0496be73b0
commit
10dcec3bd7
12 changed files with 136 additions and 77 deletions
|
|
@ -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);
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue