Convert to using a module instead of a "static" class
This commit is contained in:
parent
e71d2133f2
commit
82108bfe5f
2 changed files with 72 additions and 66 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import { PlayerActor } from "./Player.mjs";
|
import PlayerActor from "./Player.mjs";
|
||||||
|
|
||||||
export class ActorHandler extends Actor {
|
export class ActorHandler extends Actor {
|
||||||
actorTypes = {
|
actorTypes = {
|
||||||
|
|
|
||||||
|
|
@ -1,71 +1,77 @@
|
||||||
export class PlayerActor {
|
/** @this {Actor} */
|
||||||
/** @this {Actor} */
|
async function genericEmbeddedUpdate($event) {
|
||||||
static async genericEmbeddedUpdate($event) {
|
let data = $event.delegateTarget.dataset;
|
||||||
let data = $event.delegateTarget.dataset;
|
let item = await fromUuid(data.embeddedId);
|
||||||
let item = await fromUuid(data.embeddedId);
|
item?.update({ [data.embeddedUpdate]: $event.target.value });
|
||||||
item?.update({ [data.embeddedUpdate]: $event.target.value });
|
this.sheet.render();
|
||||||
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} */
|
Dialog.confirm({
|
||||||
static async genericEmbeddedDelete($event) {
|
title: game.i18n.format(
|
||||||
let data = $event.currentTarget.dataset;
|
`dotdungeon.dialogs.${item.type}.delete.title`,
|
||||||
let item = await fromUuid(data.embeddedId);
|
item
|
||||||
|
),
|
||||||
|
content: game.i18n.format(
|
||||||
|
`dotdungeon.dialogs.${item.type}.delete.content`,
|
||||||
|
item
|
||||||
|
),
|
||||||
|
yes: () => {
|
||||||
|
item.delete();
|
||||||
|
},
|
||||||
|
defaultYes: false,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
if (!item) {
|
/** @this {Actor} */
|
||||||
ui.notifications.error(
|
async function createCustomItem(defaults, opts = {}) {
|
||||||
`dotdungeon.notification.error.item-not-found`,
|
let items = await this.createEmbeddedDocuments(`Item`, defaults);
|
||||||
{ console: false }
|
if (items.length == 0) {
|
||||||
);
|
throw new Error();
|
||||||
return;
|
};
|
||||||
|
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
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue