Begin working on making there be per-subtype classes for class methods

This commit is contained in:
Oliver-Akins 2024-01-07 00:54:16 -07:00
parent b4dcad9eee
commit 07bebdba4d
6 changed files with 88 additions and 25 deletions

View file

@ -0,0 +1,22 @@
import { PlayerActor } from "./Player.mjs";
export class ActorHandler extends Actor {
actorTypes = {
player: PlayerActor,
};
constructor(data, ctx) {
super(data, ctx);
};
/** @type {class|undefined} */
get fn() {
return this.actorTypes[this.type];
};
createCustomSpell() {
if (!this.fn?.createCustomSpell) return;
this.fn.createCustomSpell.bind(this)();
this.sheet.render(true);
};
};

View file

@ -0,0 +1,10 @@
export class PlayerActor {
static createCustomSpell() {
let customUUID = `Spell.Custom.${randomID()}`;
this.system.spells[customUUID] = {
name: ``,
cost: ``,
description: ``,
};
};
};

View file

@ -135,11 +135,11 @@ export class PlayerData extends foundry.abstract.DataModel {
upkeep: new fields.NumberField({ min: 0, integer: true }),
info: new fields.StringField(),
}),
spells: new fields.ArrayField(
spells: new MappingField(
new fields.SchemaField({
name: new fields.StringField(),
cost: new fields.NumberField(),
info: new fields.StringField(),
name: new fields.StringField({ initial: ``, blank: true, trim: true }),
cost: new fields.NumberField({ initial: 0, min: 0 }),
info: new fields.StringField({ initial: ``, blank: true, trim: true }),
})
),
respawns: new fields.SchemaField({

View file

@ -19,17 +19,7 @@ export class PlayerSheet extends GenericActorSheet {
if (!this.isEditable) return;
console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`);
/*
Toggles the expanded state for the detail elements in the sheet.
*/
};
#syncValue() {
let delta = 0;
for (const actor of game.actors) {
delta += actor.system.syncDelta ?? 0;
};
return 100 + delta;
html.find(`.add-spell`).on(`click`, this.actor.createCustomSpell.bind(this.actor));
};
getData() {
@ -40,7 +30,6 @@ export class PlayerSheet extends GenericActorSheet {
ctx.flags = actor.flags;
ctx.computed = {
syncTotal: this.#syncValue(),
canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM,
};
@ -50,6 +39,4 @@ export class PlayerSheet extends GenericActorSheet {
console.groupEnd();
return ctx;
};
};