diff --git a/langs/en-ca.json b/langs/en-ca.json index 1c1f3cb..f2c7ceb 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -78,7 +78,10 @@ } }, "sheet-names": { - "PlayerSheet": "PC/PUG Sheet", + "PlayerSheet": { + "MVP": "MVP PC Sheet", + "v2": "PC Sheet" + }, "SyncSheet": { "basic": "Theme: Basic" }, diff --git a/module/dotdungeon.mjs b/module/dotdungeon.mjs index 75d7ae6..6aa6177 100644 --- a/module/dotdungeon.mjs +++ b/module/dotdungeon.mjs @@ -19,7 +19,7 @@ import { PetSheet } from "./sheets/Items/PetSheet.mjs"; // Actor Sheets import { BasicSyncSheet } from "./sheets/SyncVariations/BasicSyncSheet.mjs"; -import { PlayerSheet } from "./sheets/MVPPCSheet.mjs"; +import { PlayerSheetv2 } from "./sheets/Actors/PC/Improved.mjs"; import { MVPPCSheet } from "./sheets/MVPPCSheet.mjs"; import { MobSheet } from "./sheets/MobSheet.mjs"; @@ -55,7 +55,12 @@ Hooks.once(`init`, async () => { Actors.registerSheet("dotdungeon", MVPPCSheet, { makeDefault: true, types: ["player"], - label: "dotdungeon.sheet-names.PlayerSheet" + label: "dotdungeon.sheet-names.PlayerSheet.MVP" + }); + Actors.registerSheet("dotdungeon", PlayerSheetv2, { + makeDefault: false, + types: ["player"], + label: "dotdungeon.sheet-names.PlayerSheet.v2" }); Actors.registerSheet("dotdungeon", MobSheet, { makeDefault: true, diff --git a/module/sheets/Actors/PC/Improved.mjs b/module/sheets/Actors/PC/Improved.mjs new file mode 100644 index 0000000..56c00f7 --- /dev/null +++ b/module/sheets/Actors/PC/Improved.mjs @@ -0,0 +1,47 @@ +import { GenericActorSheet } from "../../GenericActorSheet.mjs"; + +export class PlayerSheetv2 extends GenericActorSheet { + static get defaultOptions() { + let opts = mergeObject( + super.defaultOptions, + { + template: `systems/dotdungeon/templates/actors/char-sheet/v2/sheet.hbs`, + tabs: [ + { + // group: `page`, + navSelector: `.potato`, + contentSelector: `.tab-content`, + initial: `tab1`, + }, + ], + } + ); + opts.classes.push(`dotdungeon`); + return opts; + }; + + activateListeners(html) { + super.activateListeners(html); + + if (this.document.isEmbedded) return; + if (!this.isEditable) return; + console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`); + }; + + async getData() { + const ctx = await super.getData(); + /** @type {ActorHandler} */ + const actor = this.actor; + + ctx.system = actor.system; + ctx.flags = actor.flags; + ctx.items = this.actor.itemTypes; + + ctx.computed = { + canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM, + canAddAspect: !await actor.proxyFunction.bind(actor)(`atAspectLimit`), + }; + + return ctx; + }; +} \ No newline at end of file diff --git a/module/sheets/MobSheet.mjs b/module/sheets/MobSheet.mjs index 960a885..a31c949 100644 --- a/module/sheets/MobSheet.mjs +++ b/module/sheets/MobSheet.mjs @@ -1,6 +1,7 @@ import { ActorHandler } from "../documents/Actor/Handler.mjs"; import { GenericActorSheet } from "./GenericActorSheet.mjs"; import { DiceList } from "../dialogs/DiceList.mjs"; +import { PopoutTextEditor } from "../dialogs/PopoutTextEditor.mjs"; export class MobSheet extends GenericActorSheet { static get defaultOptions() { @@ -28,6 +29,14 @@ export class MobSheet extends GenericActorSheet { let d = new DiceList(this.actor); d.render(true); }); + html.find(`[data-text-editor]`) + .on(`click`, () => { + let editor = new PopoutTextEditor( + this.actor, + `system.description` + ); + editor.render(true); + }); }; async getData() { diff --git a/styles/root.scss b/styles/root.scss index 385f0a1..cc4fcbe 100644 --- a/styles/root.scss +++ b/styles/root.scss @@ -15,6 +15,7 @@ @use "./sheets/partials/panel.scss"; @use "./sheets/actor/mvp.scss"; +@use "./sheets/actor/char-sheet/v2.scss"; @use "./sheets/actor/mob/mob.scss"; @use "./sheets/actor/sync/basic.scss"; @use "./sheets/items/custom.scss"; diff --git a/styles/sheets/actor/char-sheet/themes/dark.scss b/styles/sheets/actor/char-sheet/themes/dark.scss new file mode 100644 index 0000000..65acb16 --- /dev/null +++ b/styles/sheets/actor/char-sheet/themes/dark.scss @@ -0,0 +1,7 @@ +$bg-base: #202b38; + +.actor--pc { + --sheet-bg: #{$bg-base}; + --nav-bg: var(--panel-bg); + --panel-bg: rgba(255, 255, 255, 0.05); +} diff --git a/styles/sheets/actor/char-sheet/v2.scss b/styles/sheets/actor/char-sheet/v2.scss new file mode 100644 index 0000000..8203852 --- /dev/null +++ b/styles/sheets/actor/char-sheet/v2.scss @@ -0,0 +1,11 @@ +@use "./themes/dark.scss"; + +.dotdungeon .actor--pc { + background: var(--sheet-bg); + display: grid; + grid-template-rows: 1fr minmax(min-content, 50px); + + nav { + background: var(--panel-bg); + } +} diff --git a/styles/sheets/actor/mvp.scss b/styles/sheets/actor/mvp.scss index 28fafaf..9fdd044 100644 --- a/styles/sheets/actor/mvp.scss +++ b/styles/sheets/actor/mvp.scss @@ -1,7 +1,7 @@ @use "../../vars.scss" as *; @use "../../mixins/breakpoints" as *; -.dotdungeon .actor--pc { +.dotdungeon .actor--pc-mvp { display: grid; grid-template-areas: "profile stats stats" diff --git a/templates/actors/char-sheet-mvp/sheet.hbs b/templates/actors/char-sheet-mvp/sheet.hbs index 98e9dcc..7497352 100644 --- a/templates/actors/char-sheet-mvp/sheet.hbs +++ b/templates/actors/char-sheet-mvp/sheet.hbs @@ -1,4 +1,4 @@ -
+ {{> dotdungeon.pc.profile }} diff --git a/templates/actors/char-sheet/v2/sheet.hbs b/templates/actors/char-sheet/v2/sheet.hbs new file mode 100644 index 0000000..209c808 --- /dev/null +++ b/templates/actors/char-sheet/v2/sheet.hbs @@ -0,0 +1,22 @@ + + {{!-- All panels here --}} +
+
+

Tab 1

+
+
+

Tab 2

+
+
+

Tab 3

+
+
+ + + {{!-- Tab list here --}} +
+ Tab 1 + Tab 2 + Tab 3 +
+