Get the PlayerSheet working and actually saving data, using the data models instead of the template.json

This commit is contained in:
Oliver-Akins 2023-11-29 00:08:19 -07:00
parent 6e3510ddd4
commit 58facf1490
11 changed files with 339 additions and 234 deletions

View file

@ -1 +0,0 @@
export class CharacterActor extends Actor {}

View file

@ -0,0 +1,11 @@
export class PlayerActor extends Actor {
prepareData() {
super.prepareData();
};
prepareDerivedData() {};
_preparePCData() {};
_prepareNPCData() {};
};

View file

@ -1,6 +1,7 @@
// Class imports
import { CharacterActor } from "./documents/CharacterActor.js";
import { CharacterSheet } from "./sheets/CharacterSheet.js";
import { PlayerActor } from "./documents/PlayerActor.js";
import { PlayerSheet } from "./sheets/PlayerSheet.mjs";
import { PlayerData } from "./models/PlayerData.js";
// Utility imports
import * as hbs from "./handlebars.js";
@ -9,17 +10,19 @@ import * as hbs from "./handlebars.js";
import "./hooks/hotReload.js";
Hooks.once(`init`, async () => {
Hooks.once(`init`, () => {
console.log(`.dungeon | Init hook started`)
game.boilerplate = {
CharacterActor,
PlayerActor,
};
CONFIG.Actor.systemDataModels.player = PlayerData;
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("dotdungeon", CharacterSheet, { makeDefault: true, });
// Actors.registerSheet("dotdungeon", CharacterSheet, { makeDefault: true, });
Actors.registerSheet("dotdungeon.player", PlayerSheet, { makeDefault: true });
await hbs.registerHandlebarsHelpers();
await hbs.preloadHandlebarsTemplates()
hbs.registerHandlebarsHelpers();
hbs.preloadHandlebarsTemplates();
console.info(`.dungeon | Dot Dungeon has been initialized fully`);
});

View file

@ -0,0 +1,57 @@
export class PlayerData extends foundry.abstract.DataModel {
static defineSchema() {
const fields = foundry.data.fields;
return {
stats: new fields.SchemaField({
build: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(`build args`, args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
meta: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
presence: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
hands: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
tilt: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
rng: new fields.StringField({
blank: true,
trim: true,
options(...args) {
console.log(args);
return [ `d4`, `d6`, `d8`, `d10`, `d12`, `d20` ];
},
}),
}),
};
};
};

View file

@ -1,26 +0,0 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
export class CharacterSheet extends ActorSheet {
static get defaultOptions() {
let opts = mergeObject(
super.defaultOptions,
{
template: "systems/dotdungeon/templates/actors/char-sheet-mvp/sheet.hbs"
}
);
opts.classes.push("dotdungeon");
return opts;
};
activateListeners(html) {
super.activateListeners(html);
if (!this.isEditable) return;
console.debug(`.dungeon | Adding event listeners for Actor${this.id}`)
// Modal openings
html.find(`button.stat-prompt`).on("click", () => {});
}
}

View file

@ -0,0 +1,36 @@
export class PlayerSheet extends ActorSheet {
static get defaultOptions() {
let opts = mergeObject(
super.defaultOptions,
{
template: "systems/dotdungeon/templates/actors/char-sheet-mvp/sheet.hbs"
}
);
opts.classes.push("dotdungeon");
return opts;
};
activateListeners(html) {
super.activateListeners(html);
if (!this.isEditable) return;
console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`);
// Modal openings
// html.find(`button.stat-prompt`).on("click", () => {});
};
getData() {
const ctx = super.getData();
const actor = this.actor.toObject(false);
ctx.system = actor.system;
ctx.flags = actor.flags;
console.group(`PlayerSheet.getData`);
console.log(`ctx`, ctx);
console.log(`actor`, actor);
console.groupEnd();
return ctx;
};
}