From 0f28e23b5cb1f87e3d098b02eb2bedf947ddeaa6 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Sat, 30 Mar 2024 12:59:16 -0600 Subject: [PATCH] Add a datasheet for untyped items and foils --- langs/en-ca.2.json | 3 + module/dotdungeon.mjs | 4 + module/hooks/devInit.mjs | 17 +++ module/sheets/Datasheets/UntypedDataSheet.mjs | 27 ++++ styles/v3/index.scss | 3 + styles/v3/layouts/datasheet.scss | 6 + templates/datasheets/untyped.hbs | 141 ++++++++++++++++++ 7 files changed, 201 insertions(+) create mode 100644 module/hooks/devInit.mjs create mode 100644 module/sheets/Datasheets/UntypedDataSheet.mjs create mode 100644 styles/v3/layouts/datasheet.scss create mode 100644 templates/datasheets/untyped.hbs diff --git a/langs/en-ca.2.json b/langs/en-ca.2.json index 460fbaf..cdf74a9 100644 --- a/langs/en-ca.2.json +++ b/langs/en-ca.2.json @@ -75,6 +75,9 @@ "send-to-chat": "Send to Chat", "edit": "Edit", "delete": "Delete" + }, + "sheet-names": { + "UntypedDataSheet": "Data Sheet" } }, "TYPES": { diff --git a/module/dotdungeon.mjs b/module/dotdungeon.mjs index b4c597f..6d76dfb 100644 --- a/module/dotdungeon.mjs +++ b/module/dotdungeon.mjs @@ -33,6 +33,7 @@ import "./hooks/hotReload.mjs"; // Misc Imports import loadSettings from "./settings/index.mjs"; +import { devInit } from "./hooks/devInit.mjs"; import DOTDUNGEON from "./config.mjs"; @@ -101,6 +102,9 @@ Hooks.once(`init`, async () => { label: "dotdungeon.sheet-names.PetSheet" }); + if (game.settings.get(`dotdungeon`, `devMode`)) { + devInit(); + }; hbs.registerHandlebarsHelpers(); hbs.preloadHandlebarsTemplates(); diff --git a/module/hooks/devInit.mjs b/module/hooks/devInit.mjs new file mode 100644 index 0000000..4f604e0 --- /dev/null +++ b/module/hooks/devInit.mjs @@ -0,0 +1,17 @@ +/* +Initialization of dev-specific features for the init hook, this is primarily +used to register all of the data sheets of various entity types. +*/ + +import { UntypedDataSheet } from "../sheets/Datasheets/UntypedDataSheet.mjs"; + +export function devInit() { + Items.registerSheet( + `dotdungeon`, + UntypedDataSheet, + { + types: [`untyped`, `foil`], + label: `dotdungeon.sheet-names.UntypedDataSheet`, + } + ); +}; diff --git a/module/sheets/Datasheets/UntypedDataSheet.mjs b/module/sheets/Datasheets/UntypedDataSheet.mjs new file mode 100644 index 0000000..c3d7702 --- /dev/null +++ b/module/sheets/Datasheets/UntypedDataSheet.mjs @@ -0,0 +1,27 @@ +export class UntypedDataSheet extends ItemSheet { + static get defaultOptions() { + let opts = foundry.utils.mergeObject( + super.defaultOptions, + { + template: `systems/dotdungeon/templates/datasheets/untyped.hbs`, + width: 650, + height: 700 + }, + ); + opts.classes.push(`dotdungeon`, `style-v3`); + return opts; + }; + + async getData() { + const ctx = {}; + + ctx.item = this.item; + ctx.system = this.item.system; + + ctx.meta = { + idp: this.item.uuid, + }; + + return ctx; + }; +}; diff --git a/styles/v3/index.scss b/styles/v3/index.scss index 8b1a18c..2ccd28d 100644 --- a/styles/v3/index.scss +++ b/styles/v3/index.scss @@ -4,6 +4,9 @@ @use "./elements/hr.scss"; @use "./elements/icons.scss"; +/* Sheet Layouts */ +@use "./layouts/datasheet.scss"; + /* Sheet Options */ .dotdungeon.style-v3 { --scrollbar-width: 5px; diff --git a/styles/v3/layouts/datasheet.scss b/styles/v3/layouts/datasheet.scss new file mode 100644 index 0000000..aa91e4d --- /dev/null +++ b/styles/v3/layouts/datasheet.scss @@ -0,0 +1,6 @@ +.dotdungeon.style-v3 .datasheet { + display: flex; + flex-direction: column; + gap: 8px; + margin: 8px; +} diff --git a/templates/datasheets/untyped.hbs b/templates/datasheets/untyped.hbs new file mode 100644 index 0000000..225f764 --- /dev/null +++ b/templates/datasheets/untyped.hbs @@ -0,0 +1,141 @@ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ Computed Capacity Usage: {{item.usedCapacity}} +
+
+ + +
+
+ + +
+
+ + {{!-- TODO: Dropdown? --}} + +
+
+ + +
+
+ + {{!-- TODO: Dropdown? --}} + +
+
+ + {{!-- TODO: Dropdown? --}} + +
+
\ No newline at end of file