Finishing the Sync sheet and some other stuffs
This commit is contained in:
parent
a28718b115
commit
554fae5a93
26 changed files with 494 additions and 105 deletions
|
|
@ -1,6 +1,7 @@
|
|||
// Data Models
|
||||
import { AspectItemData } from "./models/AspectItemData.mjs";
|
||||
import { PlayerData } from "./models/PlayerData.mjs";
|
||||
import { SyncData } from "./models/SyncData.mjs";
|
||||
|
||||
// Main Documents
|
||||
import { PlayerActor } from "./documents/PlayerActor.mjs";
|
||||
|
|
@ -9,7 +10,7 @@ import { AspectItem } from "./documents/AspectItem.mjs";
|
|||
// Character Sheets
|
||||
import { AspectSheet } from "./sheets/AspectSheet.mjs";
|
||||
import { PlayerSheet } from "./sheets/PlayerSheet.mjs";
|
||||
|
||||
import { BasicSyncSheet } from "./sheets/SyncVariations/BasicSyncSheet.mjs";
|
||||
|
||||
// Utility imports
|
||||
import * as hbs from "./handlebars.mjs";
|
||||
|
|
@ -17,7 +18,6 @@ import * as hbs from "./handlebars.mjs";
|
|||
// Non-Setup hooks
|
||||
import "./hooks/hotReload.mjs";
|
||||
|
||||
|
||||
// Misc Imports
|
||||
import loadSettings from "./settings/index.mjs";
|
||||
|
||||
|
|
@ -32,12 +32,26 @@ Hooks.once(`init`, () => {
|
|||
AspectItem,
|
||||
};
|
||||
CONFIG.Actor.dataModels.player = PlayerData;
|
||||
CONFIG.Actor.dataModels.sync = SyncData;
|
||||
CONFIG.Item.dataModels.aspect = AspectItemData;
|
||||
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("dotdungeon.sheet", PlayerSheet, { makeDefault: true });
|
||||
Actors.registerSheet("dotdungeon", PlayerSheet, {
|
||||
makeDefault: true,
|
||||
types: ["player"],
|
||||
label: "dotdungeon.sheet.PlayerSheet"
|
||||
});
|
||||
Actors.registerSheet("dotdungeon", BasicSyncSheet, {
|
||||
makeDefault: true,
|
||||
types: ["sync"],
|
||||
label: "dotdungeon.sheet.SyncSheet.basic"
|
||||
});
|
||||
|
||||
Items.registerSheet("dotdungeon.sheet", AspectSheet, { makeDefault: true });
|
||||
Items.registerSheet("dotdungeon", AspectSheet, {
|
||||
makeDefault: true,
|
||||
types: ["aspect"],
|
||||
label: "dotdungeon.sheet.AspectSheet"
|
||||
});
|
||||
|
||||
hbs.registerHandlebarsHelpers();
|
||||
hbs.preloadHandlebarsTemplates();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { reloadWindows } from "../utils.mjs";
|
||||
import * as hbs from "../handlebars.mjs";
|
||||
|
||||
Hooks.on(`hotReload`, async (data) => {
|
||||
|
|
@ -25,7 +24,9 @@ Hooks.on(`hotReload`, async (data) => {
|
|||
_templateCache[templateName] = template;
|
||||
|
||||
// Re-render open windows
|
||||
reloadWindows();
|
||||
for (const window of ui.windows) {
|
||||
window.render(true);
|
||||
};
|
||||
|
||||
return false;
|
||||
});
|
||||
|
|
@ -78,8 +78,18 @@ export class PlayerData extends foundry.abstract.DataModel {
|
|||
cells: new fields.NumberField({ min: 0, max: 5, integer: true }),
|
||||
}),
|
||||
}),
|
||||
supplies: new fields.NumberField({ min: 0, max: 5, integer: true }),
|
||||
materials: new fields.NumberField({ min: 0, max: 5, integer: true }),
|
||||
supplies: new fields.NumberField({
|
||||
initial: 0,
|
||||
min: 0,
|
||||
max: 5,
|
||||
integer: true
|
||||
}),
|
||||
materials: new fields.NumberField({
|
||||
initial: 0,
|
||||
min: 0,
|
||||
max: 5,
|
||||
integer: true
|
||||
}),
|
||||
pet: new fields.SchemaField({
|
||||
name: new fields.HTMLField(),
|
||||
info: new fields.HTMLField(),
|
||||
|
|
@ -102,7 +112,9 @@ export class PlayerData extends foundry.abstract.DataModel {
|
|||
r3: new fields.BooleanField(),
|
||||
}),
|
||||
syncDelta: new fields.NumberField({
|
||||
required: true,
|
||||
integer: true,
|
||||
initial: 0,
|
||||
}),
|
||||
};
|
||||
};
|
||||
|
|
|
|||
12
module/models/SyncData.mjs
Normal file
12
module/models/SyncData.mjs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
export class SyncData extends foundry.abstract.DataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields;
|
||||
return {
|
||||
value: new fields.NumberField({
|
||||
required: true,
|
||||
integer: true,
|
||||
initial: 100,
|
||||
}),
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
import registerClientSettings from "./client_settings.mjs";
|
||||
import registerWorldSettings from "./world_settings.mjs";
|
||||
import registerDevSettings from "./dev_settings.mjs";
|
||||
|
||||
export default function registerSettings() {
|
||||
registerClientSettings();
|
||||
registerWorldSettings();
|
||||
registerDevSettings();
|
||||
};
|
||||
25
module/settings/world_settings.mjs
Normal file
25
module/settings/world_settings.mjs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
export default function() {
|
||||
game.settings.register(`dotdungeon`, `playersCanChangeGroup`, {
|
||||
name: `dotdungeon.settings.playersCanChangeGroup.name`,
|
||||
hint: `dotdungeon.settings.playersCanChangeGroup.description`,
|
||||
scope: `world`,
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
requiresReload: false,
|
||||
});
|
||||
|
||||
game.settings.register(`dotdungeon`, `resourcesOrSupplies`, {
|
||||
name: `dotdungeon.settings.resourcesOrSupplies.name`,
|
||||
hint: `dotdungeon.settings.resourcesOrSupplies.description`,
|
||||
scope: `world`,
|
||||
config: true,
|
||||
type: String,
|
||||
choices: {
|
||||
"supplies": "dotdungeon.settings.resourcesOrSupplies.option.supplies",
|
||||
"resources": "dotdungeon.settings.resourcesOrSupplies.option.resources"
|
||||
},
|
||||
default: "resources",
|
||||
requiresReload: false,
|
||||
});
|
||||
};
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
export class GenericSheet extends ActorSheet {
|
||||
#propogatedSettings = [
|
||||
`devMode`,
|
||||
`showAvatarOnSheet`
|
||||
`showAvatarOnSheet`,
|
||||
`playersCanChangeGroup`,
|
||||
];
|
||||
|
||||
getData() {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,35 @@ export class PlayerSheet extends GenericSheet {
|
|||
if (!this.isEditable) return;
|
||||
console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`);
|
||||
|
||||
// html.find(`input.sync__input`).on("blur", ($e) => {});
|
||||
// html.find(`input.sync__input`).on("blur", ($e) => {
|
||||
// console.debug(`.dungeon | input.sync__input blur event`);
|
||||
|
||||
// let value = parseInt($e.target.value);
|
||||
// if (!value) {
|
||||
// ui.notifications.error(
|
||||
// `dotdungeon.notification.error.invalid-integer`,
|
||||
// { localize: true }
|
||||
// );
|
||||
// return;
|
||||
// };
|
||||
// let delta = value - this.#syncValue();
|
||||
// this.actor.system.syncDelta += delta;
|
||||
// for (const actor of game.actors) {
|
||||
// if (actor._sheet)
|
||||
// }
|
||||
// game.socket.emit(`system.dotdungeon`, {
|
||||
// type: "reload",
|
||||
|
||||
// })
|
||||
// });
|
||||
};
|
||||
|
||||
#syncValue() {
|
||||
let delta = 0;
|
||||
for (const actor of game.actors) {
|
||||
delta += actor.system.syncDelta ?? 0;
|
||||
};
|
||||
return 100 + delta;
|
||||
};
|
||||
|
||||
getData() {
|
||||
|
|
@ -30,7 +58,8 @@ export class PlayerSheet extends GenericSheet {
|
|||
ctx.flags = actor.flags;
|
||||
|
||||
ctx.computed = {
|
||||
syncTotal: 0
|
||||
syncTotal: this.#syncValue(),
|
||||
canChangeGroup: ctx.settings.playersCanChangeGroup,
|
||||
};
|
||||
|
||||
console.groupCollapsed(`PlayerSheet.getData`);
|
||||
|
|
|
|||
32
module/sheets/SyncVariations/AbstractSyncSheet.mjs
Normal file
32
module/sheets/SyncVariations/AbstractSyncSheet.mjs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { GenericSheet } from "../GenericSheet.mjs";
|
||||
|
||||
export class AbstractSyncSheet extends GenericSheet {
|
||||
static get defaultOptions() {
|
||||
let opts = mergeObject(
|
||||
super.defaultOptions,
|
||||
{
|
||||
width: 200,
|
||||
height: 200,
|
||||
}
|
||||
);
|
||||
opts.classes.push(
|
||||
`dotdungeon`,
|
||||
`dotdungeon--sync-sheet`
|
||||
);
|
||||
return opts;
|
||||
};
|
||||
|
||||
getData() {
|
||||
const ctx = super.getData();
|
||||
const actor = this.actor.toObject(false);
|
||||
|
||||
ctx.system = actor.system;
|
||||
ctx.flags = actor.flags;
|
||||
|
||||
console.groupCollapsed(`SyncSheet.getData`);
|
||||
console.log(`ctx`, ctx);
|
||||
console.log(`actor`, actor);
|
||||
console.groupEnd();
|
||||
return ctx;
|
||||
};
|
||||
};
|
||||
7
module/sheets/SyncVariations/BasicSyncSheet.mjs
Normal file
7
module/sheets/SyncVariations/BasicSyncSheet.mjs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import { AbstractSyncSheet } from "./AbstractSyncSheet.mjs";
|
||||
|
||||
export class BasicSyncSheet extends AbstractSyncSheet {
|
||||
get template() {
|
||||
return `systems/dotdungeon/templates/actors/sync/basic.hbs`;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
export function reloadWindows(type = null) {
|
||||
if (!type) {
|
||||
for (const window of ui.windows) {
|
||||
for (const window of globalThis.ui.windows) {
|
||||
window.render(true);
|
||||
};
|
||||
return;
|
||||
};
|
||||
for (const window of ui.windows) {
|
||||
for (const window of globalThis.ui.windows) {
|
||||
if (window instanceof type) {
|
||||
window.render(true);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue