Allow editing embedded documents (used for spells here) in the item's sheet itself.
This commit is contained in:
parent
516f7ac826
commit
7381a2a7fe
6 changed files with 56 additions and 7 deletions
|
|
@ -14,17 +14,28 @@ export class ActorHandler extends Actor {
|
|||
return this.actorTypes[this.type];
|
||||
};
|
||||
|
||||
genericEmbeddedUpdate($event) {
|
||||
async openEmbeddedSheet($event) {
|
||||
console.log(`openEmbeddedSheet`)
|
||||
if (this.fn?.openEmbeddedSheet) {
|
||||
this.fn.openEmbeddedSheet.bind(this)($event);
|
||||
} else {
|
||||
const data = $event.currentTarget.dataset;
|
||||
let item = await fromUuid(data.embeddedEdit);
|
||||
item?.sheet.render(true);
|
||||
};
|
||||
};
|
||||
|
||||
async genericEmbeddedUpdate($event) {
|
||||
if (!this.fn?.genericEmbeddedUpdate) return;
|
||||
this.fn.genericEmbeddedUpdate.bind(this)($event);
|
||||
};
|
||||
|
||||
genericEmbeddedDelete($event) {
|
||||
async genericEmbeddedDelete($event) {
|
||||
if (!this.fn?.genericEmbeddedDelete) return;
|
||||
this.fn.genericEmbeddedDelete.bind(this)($event);
|
||||
};
|
||||
|
||||
createCustomSpell() {
|
||||
async createCustomSpell() {
|
||||
if (!this.fn?.createCustomSpell) return;
|
||||
this.fn.createCustomSpell.bind(this)();
|
||||
this.sheet.render(true);
|
||||
|
|
|
|||
|
|
@ -37,11 +37,26 @@ export class PlayerActor {
|
|||
};
|
||||
|
||||
/** @this {Actor} */
|
||||
static createCustomSpell() {
|
||||
this.createEmbeddedDocuments(
|
||||
static async createCustomSpell() {
|
||||
let items = await this.createEmbeddedDocuments(
|
||||
"Item",
|
||||
[{ type: `spell`, name: `New Spell` }]
|
||||
[{
|
||||
type: `spell`,
|
||||
name: game.i18n.format(`dotdungeon.defaults.spell.name`),
|
||||
}]
|
||||
);
|
||||
if (items.length == 0) {
|
||||
ui.notifications.error(
|
||||
`dotdungeon.notifications.error.spell-create-failed`,
|
||||
{ localize: true, console: false }
|
||||
);
|
||||
return;
|
||||
};
|
||||
this.sheet.render();
|
||||
if (game.settings.get(`dotdungeon`, `openEmbeddedOnCreate`)) {
|
||||
for (const item of items) {
|
||||
item.sheet.render(true);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,4 +8,14 @@ export default function() {
|
|||
default: true,
|
||||
requiresReload: false,
|
||||
});
|
||||
|
||||
game.settings.register(`dotdungeon`, `openEmbeddedOnCreate`, {
|
||||
name: `dotdungeon.settings.openEmbeddedOnCreate.name`,
|
||||
hint: `dotdungeon.settings.openEmbeddedOnCreate.description`,
|
||||
scope: `client`,
|
||||
type: Boolean,
|
||||
config: true,
|
||||
default: true,
|
||||
requiresReload: false,
|
||||
});
|
||||
};
|
||||
|
|
@ -24,6 +24,8 @@ export class PlayerSheet extends GenericActorSheet {
|
|||
.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]`)
|
||||
.on(`click`, this.actor.openEmbeddedSheet.bind(this.actor));
|
||||
};
|
||||
|
||||
async getData() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue