Convert to using a module instead of a "static" class

This commit is contained in:
Oliver-Akins 2024-01-13 01:25:11 -07:00
parent e71d2133f2
commit 82108bfe5f
2 changed files with 72 additions and 66 deletions

View file

@ -1,4 +1,4 @@
import { PlayerActor } from "./Player.mjs";
import PlayerActor from "./Player.mjs";
export class ActorHandler extends Actor {
actorTypes = {

View file

@ -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
};