diff --git a/module/documents/Actor/Handler.mjs b/module/documents/Actor/Handler.mjs index 90faa65..ecdb0fd 100644 --- a/module/documents/Actor/Handler.mjs +++ b/module/documents/Actor/Handler.mjs @@ -1,4 +1,4 @@ -import { PlayerActor } from "./Player.mjs"; +import PlayerActor from "./Player.mjs"; export class ActorHandler extends Actor { actorTypes = { diff --git a/module/documents/Actor/Player.mjs b/module/documents/Actor/Player.mjs index 00d8cbe..6df033b 100644 --- a/module/documents/Actor/Player.mjs +++ b/module/documents/Actor/Player.mjs @@ -1,71 +1,77 @@ -export class PlayerActor { - /** @this {Actor} */ - static async genericEmbeddedUpdate($event) { - let data = $event.delegateTarget.dataset; - let item = await fromUuid(data.embeddedId); - item?.update({ [data.embeddedUpdate]: $event.target.value }); - this.sheet.render(); +/** @this {Actor} */ +async function genericEmbeddedUpdate($event) { + let data = $event.delegateTarget.dataset; + let item = await fromUuid(data.embeddedId); + item?.update({ [data.embeddedUpdate]: $event.target.value }); + this.sheet.render(); +}; + +/** @this {Actor} */ +async function genericEmbeddedDelete($event) { + let data = $event.currentTarget.dataset; + let item = await fromUuid(data.embeddedId); + + if (!item) { + ui.notifications.error( + `dotdungeon.notification.error.item-not-found`, + { console: false } + ); + return; }; - /** @this {Actor} */ - static async genericEmbeddedDelete($event) { - let data = $event.currentTarget.dataset; - let item = await fromUuid(data.embeddedId); + Dialog.confirm({ + title: game.i18n.format( + `dotdungeon.dialogs.${item.type}.delete.title`, + item + ), + content: game.i18n.format( + `dotdungeon.dialogs.${item.type}.delete.content`, + item + ), + yes: () => { + item.delete(); + }, + defaultYes: false, + }); +}; - if (!item) { - ui.notifications.error( - `dotdungeon.notification.error.item-not-found`, - { console: false } - ); - return; +/** @this {Actor} */ +async function createCustomItem(defaults, opts = {}) { + let items = await this.createEmbeddedDocuments(`Item`, defaults); + if (items.length == 0) { + throw new Error(); + }; + this.sheet.render(); + if ( + game.settings.get(`dotdungeon`, `openEmbeddedOnCreate`) + && !opts.overrideSheetOpen + ) { + for (const item of items) { + item.sheet.render(true); }; - - Dialog.confirm({ - title: game.i18n.format( - `dotdungeon.dialogs.${item.type}.delete.title`, - item - ), - content: game.i18n.format( - `dotdungeon.dialogs.${item.type}.delete.content`, - item - ), - yes: () => { - item.delete(); - }, - defaultYes: false, - }); - }; - - /** @this {Actor} */ - static async createCustomItem(defaults, opts = {}) { - let items = await this.createEmbeddedDocuments(`Item`, defaults); - if (items.length == 0) { - throw new Error(); - }; - this.sheet.render(); - if ( - game.settings.get(`dotdungeon`, `openEmbeddedOnCreate`) - && !opts.overrideSheetOpen - ) { - for (const item of items) { - item.sheet.render(true); - }; - }; - }; - - /** @this {Actor} */ - static async createCustomAspect() { - await PlayerActor.createCustomItem.bind(this)([{ - type: `aspect`, - name: game.i18n.format(`dotdungeon.defaults.aspect.name`), - }]); - }; - - /** @this {Actor} */ - static async createCustomSpell() { - await PlayerActor.createCustomItem.bind(this)([{ - type: `spell`, - name: game.i18n.format(`dotdungeon.defaults.spell.name`), - }]); }; }; + +/** @this {Actor} */ +async function createCustomAspect() { + await createCustomItem.bind(this)([{ + type: `aspect`, + name: game.i18n.format(`dotdungeon.defaults.aspect.name`), + }]); +}; + +/** @this {Actor} */ +async function createCustomSpell() { + await createCustomItem.bind(this)([{ + type: `spell`, + name: game.i18n.format(`dotdungeon.defaults.spell.name`), + }]); +}; + +export default { + genericEmbeddedDelete, + genericEmbeddedUpdate, + createCustomItem, + createCustomAspect, + createCustomSpell +}; \ No newline at end of file