diff --git a/langs/en-ca.json b/langs/en-ca.json index a4574ab..de76603 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -67,6 +67,10 @@ "supplies": "Supplies", "resources": "Resources" } + }, + "openEmbeddedOnCreate": { + "name": "Edit Custom Items Immediately When Created", + "description": "Tells the character sheets that have \"Add\" buttons to open the Item's sheet when you create the new item so that you can immediately edit it without needing to click more buttons." } }, "sheet-names": { @@ -220,7 +224,8 @@ "notification": { "error": { "invalid-integer": "You must enter a valid whole number", - "item-not-found": "Failed to find an item to delete." + "item-not-found": "Failed to find an item to delete", + "spell-create-failed": "Failed to create a custom spell" } }, "dialogs": { @@ -262,6 +267,11 @@ "explosives": "Explosives", "piloting": "Piloting" } + }, + "defaults": { + "spell": { + "name": "(Unnamed Spell)" + } } }, diff --git a/module/documents/Actor/Handler.mjs b/module/documents/Actor/Handler.mjs index 2fbe384..8252ba2 100644 --- a/module/documents/Actor/Handler.mjs +++ b/module/documents/Actor/Handler.mjs @@ -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); diff --git a/module/documents/Actor/Player.mjs b/module/documents/Actor/Player.mjs index 39ae1a8..65239f8 100644 --- a/module/documents/Actor/Player.mjs +++ b/module/documents/Actor/Player.mjs @@ -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); + }; + }; }; }; diff --git a/module/settings/client_settings.mjs b/module/settings/client_settings.mjs index d319fd8..c3e568f 100644 --- a/module/settings/client_settings.mjs +++ b/module/settings/client_settings.mjs @@ -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, + }); }; \ No newline at end of file diff --git a/module/sheets/PlayerSheet.mjs b/module/sheets/PlayerSheet.mjs index a867f47..c1f588c 100644 --- a/module/sheets/PlayerSheet.mjs +++ b/module/sheets/PlayerSheet.mjs @@ -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() { diff --git a/templates/actors/char-sheet-mvp/panels/spells.pc.hbs b/templates/actors/char-sheet-mvp/panels/spells.pc.hbs index e3d30a5..fc766d7 100644 --- a/templates/actors/char-sheet-mvp/panels/spells.pc.hbs +++ b/templates/actors/char-sheet-mvp/panels/spells.pc.hbs @@ -33,6 +33,7 @@