Get the PlayerSheet working and actually saving data, using the data models instead of the template.json
This commit is contained in:
parent
6e3510ddd4
commit
58facf1490
11 changed files with 339 additions and 234 deletions
|
|
@ -1 +0,0 @@
|
|||
export class CharacterActor extends Actor {}
|
||||
11
module/documents/PlayerActor.js
Normal file
11
module/documents/PlayerActor.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
export class PlayerActor extends Actor {
|
||||
prepareData() {
|
||||
super.prepareData();
|
||||
};
|
||||
|
||||
prepareDerivedData() {};
|
||||
|
||||
_preparePCData() {};
|
||||
|
||||
_prepareNPCData() {};
|
||||
};
|
||||
|
|
@ -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`);
|
||||
});
|
||||
|
||||
|
|
|
|||
57
module/models/PlayerData.js
Normal file
57
module/models/PlayerData.js
Normal 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` ];
|
||||
},
|
||||
}),
|
||||
}),
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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", () => {});
|
||||
}
|
||||
}
|
||||
36
module/sheets/PlayerSheet.mjs
Normal file
36
module/sheets/PlayerSheet.mjs
Normal 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;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue