Update the Actor sheets to not be prefixed with Hero in their files/classes

This commit is contained in:
Oliver-Akins 2025-04-12 13:12:28 -06:00
parent 5b74fd6beb
commit cfc744e42f
14 changed files with 84 additions and 81 deletions

View file

@ -1,7 +1,8 @@
{ {
"TYPES": { "TYPES": {
"Actor": { "Actor": {
"hero": "Hero" "hero": "Hero",
"geist": "Geist"
}, },
"Item": { "Item": {
"ammo": "Ammo", "ammo": "Ammo",
@ -17,9 +18,9 @@
"sheet-names": { "sheet-names": {
"AllItemsSheetV1": "RipCrypt Item Sheet", "AllItemsSheetV1": "RipCrypt Item Sheet",
"CombinedHeroSheet": "Hero Sheet", "CombinedHeroSheet": "Hero Sheet",
"HeroSummaryCardV1": "Hero Stat Card", "StatsCardV1": "Hero Stat Card",
"HeroCraftCardV1": "Hero Craft Card", "CraftCardV1": "Hero Craft Card",
"HeroSkillsCardV1": "Hero Skill Card" "SkillsCardV1": "Hero Skill Card"
}, },
"app-titles": { "app-titles": {
"AmmoTracker": "Ammo Tracker" "AmmoTracker": "Ammo Tracker"
@ -156,7 +157,7 @@
} }
}, },
"Apps": { "Apps": {
"traits-range": "@RipCrypt.common.traits / @RipCrypt.common.range", "traits-range": "@RipCrypt.common.traits & @RipCrypt.common.range",
"grit-skills": "@RipCrypt.common.abilities.grit Skills", "grit-skills": "@RipCrypt.common.abilities.grit Skills",
"gait-skills": "@RipCrypt.common.abilities.gait Skills", "gait-skills": "@RipCrypt.common.abilities.gait Skills",
"grip-skills": "@RipCrypt.common.abilities.grip Skills", "grip-skills": "@RipCrypt.common.abilities.grip Skills",

View file

@ -1,9 +1,9 @@
import { CraftCardV1 } from "./CraftCardV1.mjs";
import { filePath } from "../../consts.mjs"; import { filePath } from "../../consts.mjs";
import { GenericAppMixin } from "../GenericApp.mjs"; import { GenericAppMixin } from "../GenericApp.mjs";
import { HeroCraftCardV1 } from "./HeroCraftCardV1.mjs";
import { HeroSkillsCardV1 } from "./HeroSkillsCardV1.mjs";
import { HeroSummaryCardV1 } from "./HeroSummaryCardV1.mjs";
import { Logger } from "../../utils/Logger.mjs"; import { Logger } from "../../utils/Logger.mjs";
import { SkillsCardV1 } from "./SkillsCardV1.mjs";
import { StatsCardV1 } from "./StatsCardV1.mjs";
const { HandlebarsApplicationMixin } = foundry.applications.api; const { HandlebarsApplicationMixin } = foundry.applications.api;
const { ActorSheetV2 } = foundry.applications.sheets; const { ActorSheetV2 } = foundry.applications.sheets;
@ -32,10 +32,10 @@ export class CombinedHeroSheet extends GenericAppMixin(HandlebarsApplicationMixi
static PARTS = { static PARTS = {
summary: { summary: {
template: filePath(`templates/Apps/HeroSummaryCardV1/content.hbs`), template: filePath(`templates/Apps/StatsCardV1/content.hbs`),
}, },
skills: { skills: {
template: filePath(`templates/Apps/HeroSkillsCardV1/content.hbs`), template: filePath(`templates/Apps/SkillsCardV1/content.hbs`),
}, },
craft: { craft: {
template: filePath(`templates/Apps/CombinedHeroSheet/crafts.hbs`), template: filePath(`templates/Apps/CombinedHeroSheet/crafts.hbs`),
@ -47,8 +47,8 @@ export class CombinedHeroSheet extends GenericAppMixin(HandlebarsApplicationMixi
async _onRender(context, options) { async _onRender(context, options) {
await super._onRender(context, options); await super._onRender(context, options);
const summaryElement = this.element.querySelector(`.HeroSummaryCardV1`); const summaryElement = this.element.querySelector(`.StatsCardV1`);
HeroSummaryCardV1._onRender( StatsCardV1._onRender(
context, context,
{ {
...options, ...options,
@ -57,8 +57,8 @@ export class CombinedHeroSheet extends GenericAppMixin(HandlebarsApplicationMixi
}, },
); );
const skillsElement = this.element.querySelector(`.HeroSkillsCardV1`); const skillsElement = this.element.querySelector(`.SkillsCardV1`);
HeroSkillsCardV1._onRender.bind(this)( SkillsCardV1._onRender.bind(this)(
context, context,
{ {
...options, ...options,
@ -68,7 +68,7 @@ export class CombinedHeroSheet extends GenericAppMixin(HandlebarsApplicationMixi
); );
const craftsElement = this.element.querySelector(`.crafts-summary`); const craftsElement = this.element.querySelector(`.crafts-summary`);
HeroCraftCardV1._onRender.bind(this)( CraftCardV1._onRender.bind(this)(
context, context,
{ {
...options, ...options,
@ -84,23 +84,23 @@ export class CombinedHeroSheet extends GenericAppMixin(HandlebarsApplicationMixi
switch (partId) { switch (partId) {
case `summary`: { case `summary`: {
ctx = await HeroSummaryCardV1.prepareGuts(ctx); ctx = await StatsCardV1.prepareGuts(ctx);
ctx = await HeroSummaryCardV1.prepareWeapons(ctx); ctx = await StatsCardV1.prepareWeapons(ctx);
ctx = await HeroSummaryCardV1.prepareArmor(ctx); ctx = await StatsCardV1.prepareArmor(ctx);
ctx = await HeroSummaryCardV1.prepareFatePath(ctx); ctx = await StatsCardV1.prepareFatePath(ctx);
ctx = await HeroSummaryCardV1.prepareAbilityRow(ctx); ctx = await StatsCardV1.prepareAbilityRow(ctx);
ctx = await HeroSummaryCardV1.prepareSpeed(ctx); ctx = await StatsCardV1.prepareSpeed(ctx);
ctx = await HeroSummaryCardV1.prepareLevelData(ctx); ctx = await StatsCardV1.prepareLevelData(ctx);
break; break;
}; };
case `skills`: { case `skills`: {
ctx = await HeroSkillsCardV1.prepareGear(ctx); ctx = await SkillsCardV1.prepareGear(ctx);
ctx = await HeroSkillsCardV1.prepareAmmo(ctx); ctx = await SkillsCardV1.prepareAmmo(ctx);
ctx = await HeroSkillsCardV1.prepareSkills(ctx); ctx = await SkillsCardV1.prepareSkills(ctx);
break; break;
}; };
case `craft`: { case `craft`: {
ctx = await HeroCraftCardV1.prepareCraft(ctx); ctx = await CraftCardV1.prepareCraft(ctx);
break; break;
}; };
}; };

View file

@ -10,13 +10,13 @@ const { ActorSheetV2 } = foundry.applications.sheets;
const { ContextMenu } = foundry.applications.ui; const { ContextMenu } = foundry.applications.ui;
const { deepClone } = foundry.utils; const { deepClone } = foundry.utils;
export class HeroCraftCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) { export class CraftCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) {
// #region Options // #region Options
static DEFAULT_OPTIONS = { static DEFAULT_OPTIONS = {
classes: [ classes: [
`ripcrypt--actor`, `ripcrypt--actor`,
`ripcrypt--HeroCraftCardV1`, `ripcrypt--CraftCardV1`,
], ],
position: { position: {
width: `auto`, width: `auto`,
@ -35,7 +35,7 @@ export class HeroCraftCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(
static PARTS = { static PARTS = {
content: { content: {
template: filePath(`templates/Apps/HeroCraftCardV1/content.hbs`), template: filePath(`templates/Apps/CraftCardV1/content.hbs`),
}, },
}; };
// #endregion // #endregion
@ -43,7 +43,7 @@ export class HeroCraftCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(
// #region Lifecycle // #region Lifecycle
async _onRender(context, options) { async _onRender(context, options) {
await super._onRender(context, options); await super._onRender(context, options);
HeroCraftCardV1._onRender.bind(this)(context, options); CraftCardV1._onRender.bind(this)(context, options);
}; };
static async _onRender(_context, options) { static async _onRender(_context, options) {
@ -80,8 +80,8 @@ export class HeroCraftCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(
ctx = await super._preparePartContext(partId, ctx, opts); ctx = await super._preparePartContext(partId, ctx, opts);
ctx.actor = this.document; ctx.actor = this.document;
ctx = await HeroCraftCardV1.prepareAura(ctx); ctx = await CraftCardV1.prepareAura(ctx);
ctx = await HeroCraftCardV1.prepareCraft(ctx); ctx = await CraftCardV1.prepareCraft(ctx);
Logger.debug(`Context:`, ctx); Logger.debug(`Context:`, ctx);
return ctx; return ctx;

View file

@ -13,13 +13,13 @@ const { ActorSheetV2 } = foundry.applications.sheets;
const { ContextMenu } = foundry.applications.ui; const { ContextMenu } = foundry.applications.ui;
const { deepClone } = foundry.utils; const { deepClone } = foundry.utils;
export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) { export class SkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) {
// #region Options // #region Options
static DEFAULT_OPTIONS = { static DEFAULT_OPTIONS = {
classes: [ classes: [
`ripcrypt--actor`, `ripcrypt--actor`,
`ripcrypt--HeroSkillsCardV1`, `ripcrypt--SkillsCardV1`,
], ],
position: { position: {
width: `auto`, width: `auto`,
@ -38,7 +38,7 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
static PARTS = { static PARTS = {
content: { content: {
template: filePath(`templates/Apps/HeroSkillsCardV1/content.hbs`), template: filePath(`templates/Apps/SkillsCardV1/content.hbs`),
}, },
}; };
// #endregion // #endregion
@ -46,8 +46,8 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
// #region Lifecycle // #region Lifecycle
async _onRender(context, options) { async _onRender(context, options) {
await super._onRender(context, options); await super._onRender(context, options);
HeroSkillsCardV1._onRender.bind(this)(context, options); SkillsCardV1._onRender.bind(this)(context, options);
HeroSkillsCardV1._createPopoverListeners.bind(this)(); SkillsCardV1._createPopoverListeners.bind(this)();
}; };
static async _onRender(_context, options) { static async _onRender(_context, options) {
@ -80,7 +80,7 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
); );
}; };
/** @this {HeroSkillsCardV1} */ /** @this {SkillsCardV1} */
static async _createPopoverListeners() { static async _createPopoverListeners() {
const ammoInfoIcon = this.element.querySelector(`.ammo-info-icon`); const ammoInfoIcon = this.element.querySelector(`.ammo-info-icon`);
const idPrefix = this.actor.uuid; const idPrefix = this.actor.uuid;
@ -96,9 +96,9 @@ export class HeroSkillsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin
ctx = await super._preparePartContext(partId, ctx, opts); ctx = await super._preparePartContext(partId, ctx, opts);
ctx.actor = this.document; ctx.actor = this.document;
ctx = await HeroSkillsCardV1.prepareGear(ctx); ctx = await SkillsCardV1.prepareGear(ctx);
ctx = await HeroSkillsCardV1.prepareAmmo(ctx); ctx = await SkillsCardV1.prepareAmmo(ctx);
ctx = await HeroSkillsCardV1.prepareSkills(ctx); ctx = await SkillsCardV1.prepareSkills(ctx);
ctx.aura = deepClone(ctx.actor.system.aura); ctx.aura = deepClone(ctx.actor.system.aura);

View file

@ -9,13 +9,13 @@ const { HandlebarsApplicationMixin } = foundry.applications.api;
const { ActorSheetV2 } = foundry.applications.sheets; const { ActorSheetV2 } = foundry.applications.sheets;
const { ContextMenu } = foundry.applications.ui; const { ContextMenu } = foundry.applications.ui;
export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) { export class StatsCardV1 extends GenericAppMixin(HandlebarsApplicationMixin(ActorSheetV2)) {
// #region Options // #region Options
static DEFAULT_OPTIONS = { static DEFAULT_OPTIONS = {
classes: [ classes: [
`ripcrypt--actor`, `ripcrypt--actor`,
`ripcrypt--HeroSummaryCardV1`, `ripcrypt--StatsCardV1`,
], ],
position: { position: {
width: `auto`, width: `auto`,
@ -34,7 +34,7 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
static PARTS = { static PARTS = {
content: { content: {
template: filePath(`templates/Apps/HeroSummaryCardV1/content.hbs`), template: filePath(`templates/Apps/StatsCardV1/content.hbs`),
}, },
}; };
// #endregion // #endregion
@ -42,7 +42,7 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
// #region Lifecycle // #region Lifecycle
async _onRender(context, options) { async _onRender(context, options) {
await super._onRender(context, options); await super._onRender(context, options);
HeroSummaryCardV1._onRender.bind(this)(context, options); StatsCardV1._onRender.bind(this)(context, options);
}; };
static async _onRender(context, options) { static async _onRender(context, options) {
@ -79,13 +79,13 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
ctx = await super._preparePartContext(partId, ctx, opts); ctx = await super._preparePartContext(partId, ctx, opts);
ctx.actor = this.document; ctx.actor = this.document;
ctx = await HeroSummaryCardV1.prepareGuts(ctx); ctx = await StatsCardV1.prepareGuts(ctx);
ctx = await HeroSummaryCardV1.prepareWeapons(ctx); ctx = await StatsCardV1.prepareWeapons(ctx);
ctx = await HeroSummaryCardV1.prepareArmor(ctx); ctx = await StatsCardV1.prepareArmor(ctx);
ctx = await HeroSummaryCardV1.prepareFatePath(ctx); ctx = await StatsCardV1.prepareFatePath(ctx);
ctx = await HeroSummaryCardV1.prepareAbilityRow(ctx); ctx = await StatsCardV1.prepareAbilityRow(ctx);
ctx = await HeroSummaryCardV1.prepareSpeed(ctx); ctx = await StatsCardV1.prepareSpeed(ctx);
ctx = await HeroSummaryCardV1.prepareLevelData(ctx); ctx = await StatsCardV1.prepareLevelData(ctx);
Logger.debug(`Context:`, ctx); Logger.debug(`Context:`, ctx);
return ctx; return ctx;

View file

@ -2,9 +2,9 @@
import { AmmoTracker } from "./Apps/popovers/AmmoTracker.mjs"; import { AmmoTracker } from "./Apps/popovers/AmmoTracker.mjs";
import { CombinedHeroSheet } from "./Apps/ActorSheets/CombinedHeroSheet.mjs"; import { CombinedHeroSheet } from "./Apps/ActorSheets/CombinedHeroSheet.mjs";
import { DicePool } from "./Apps/DicePool.mjs"; import { DicePool } from "./Apps/DicePool.mjs";
import { HeroSkillsCardV1 } from "./Apps/ActorSheets/HeroSkillsCardV1.mjs";
import { HeroSummaryCardV1 } from "./Apps/ActorSheets/HeroSummaryCardV1.mjs";
import { RichEditor } from "./Apps/RichEditor.mjs"; import { RichEditor } from "./Apps/RichEditor.mjs";
import { SkillsCardV1 } from "./Apps/ActorSheets/SkillsCardV1.mjs";
import { StatsCardV1 } from "./Apps/ActorSheets/StatsCardV1.mjs";
// Util imports // Util imports
import { distanceBetweenFates, nextFate, previousFate } from "./utils/fates.mjs"; import { distanceBetweenFates, nextFate, previousFate } from "./utils/fates.mjs";
@ -25,8 +25,8 @@ Object.defineProperty(
AmmoTracker, AmmoTracker,
DicePool, DicePool,
CombinedHeroSheet, CombinedHeroSheet,
HeroSummaryCardV1, StatsCardV1,
HeroSkillsCardV1, SkillsCardV1,
RichEditor, RichEditor,
}, },
utils: { utils: {

View file

@ -1,16 +1,17 @@
// Applications // Applications
import { AllItemSheetV1 } from "../Apps/ItemSheets/AllItemSheetV1.mjs"; import { AllItemSheetV1 } from "../Apps/ItemSheets/AllItemSheetV1.mjs";
import { CombinedHeroSheet } from "../Apps/ActorSheets/CombinedHeroSheet.mjs"; import { CombinedHeroSheet } from "../Apps/ActorSheets/CombinedHeroSheet.mjs";
import { CraftCardV1 } from "../Apps/ActorSheets/CraftCardV1.mjs";
import { DelveDiceHUD } from "../Apps/DelveDiceHUD.mjs"; import { DelveDiceHUD } from "../Apps/DelveDiceHUD.mjs";
import { HeroCraftCardV1 } from "../Apps/ActorSheets/HeroCraftCardV1.mjs";
import { HeroSkillsCardV1 } from "../Apps/ActorSheets/HeroSkillsCardV1.mjs";
import { HeroSummaryCardV1 } from "../Apps/ActorSheets/HeroSummaryCardV1.mjs";
import { RipCryptCombatTracker } from "../Apps/sidebar/CombatTracker.mjs"; import { RipCryptCombatTracker } from "../Apps/sidebar/CombatTracker.mjs";
import { SkillsCardV1 } from "../Apps/ActorSheets/SkillsCardV1.mjs";
import { StatsCardV1 } from "../Apps/ActorSheets/StatsCardV1.mjs";
// Data Models // Data Models
import { AmmoData } from "../data/Item/Ammo.mjs"; import { AmmoData } from "../data/Item/Ammo.mjs";
import { ArmourData } from "../data/Item/Armour.mjs"; import { ArmourData } from "../data/Item/Armour.mjs";
import { CraftData } from "../data/Item/Craft.mjs"; import { CraftData } from "../data/Item/Craft.mjs";
import { GeistData } from "../data/Actor/Geist.mjs";
import { GoodData } from "../data/Item/Good.mjs"; import { GoodData } from "../data/Item/Good.mjs";
import { HeroData } from "../data/Actor/Hero.mjs"; import { HeroData } from "../data/Actor/Hero.mjs";
import { ShieldData } from "../data/Item/Shield.mjs"; import { ShieldData } from "../data/Item/Shield.mjs";
@ -53,7 +54,8 @@ Hooks.once(`init`, () => {
// #region Datamodels // #region Datamodels
CONFIG.Actor.dataModels.hero = HeroData; CONFIG.Actor.dataModels.hero = HeroData;
CONFIG.Item.dataModels.ammo = AmmoData, CONFIG.Actor.dataModels.geist = GeistData;
CONFIG.Item.dataModels.ammo = AmmoData;
CONFIG.Item.dataModels.armour = ArmourData; CONFIG.Item.dataModels.armour = ArmourData;
CONFIG.Item.dataModels.craft = CraftData; CONFIG.Item.dataModels.craft = CraftData;
CONFIG.Item.dataModels.good = GoodData; CONFIG.Item.dataModels.good = GoodData;
@ -83,20 +85,20 @@ Hooks.once(`init`, () => {
label: `RipCrypt.sheet-names.CombinedHeroSheet`, label: `RipCrypt.sheet-names.CombinedHeroSheet`,
themes: CombinedHeroSheet.themes, themes: CombinedHeroSheet.themes,
}); });
Actors.registerSheet(game.system.id, HeroSummaryCardV1, { Actors.registerSheet(game.system.id, StatsCardV1, {
types: [`hero`], types: [`hero`],
label: `RipCrypt.sheet-names.HeroSummaryCardV1`, label: `RipCrypt.sheet-names.StatsCardV1`,
themes: HeroSummaryCardV1.themes, themes: StatsCardV1.themes,
}); });
Actors.registerSheet(game.system.id, HeroSkillsCardV1, { Actors.registerSheet(game.system.id, SkillsCardV1, {
types: [`hero`], types: [`hero`],
label: `RipCrypt.sheet-names.HeroSkillsCardV1`, label: `RipCrypt.sheet-names.SkillsCardV1`,
themes: HeroSkillsCardV1.themes, themes: SkillsCardV1.themes,
}); });
Actors.registerSheet(game.system.id, HeroCraftCardV1, { Actors.registerSheet(game.system.id, CraftCardV1, {
types: [`hero`], types: [`hero`],
label: `RipCrypt.sheet-names.HeroCraftCardV1`, label: `RipCrypt.sheet-names.CraftCardV1`,
themes: HeroCraftCardV1.themes, themes: CraftCardV1.themes,
}); });
// #endregion // #endregion

View file

@ -1,4 +1,4 @@
<div class="HeroCraftCardV1"> <div class="CraftCardV1">
<div class="col-header"> <div class="col-header">
{{rc-i18n "RipCrypt.common.glimcraft"}} {{rc-i18n "RipCrypt.common.glimcraft"}}
</div> </div>

View file

@ -1,4 +1,4 @@
.ripcrypt .HeroCraftCardV1 { .ripcrypt .CraftCardV1 {
--col-gap: 8px; --col-gap: 8px;
display: grid; display: grid;

View file

@ -1,4 +1,4 @@
<div class="HeroSkillsCardV1"> <div class="SkillsCardV1">
<div class="label col-header list-header gait-skills-header"> <div class="label col-header list-header gait-skills-header">
<span>{{ rc-i18n "RipCrypt.Apps.grit-skills" }}</span> <span>{{ rc-i18n "RipCrypt.Apps.grit-skills" }}</span>
</div> </div>

View file

@ -1,4 +1,4 @@
.ripcrypt .HeroSkillsCardV1 { .ripcrypt .SkillsCardV1 {
/* Foundry Variable Tweaks */ /* Foundry Variable Tweaks */
--input-height: 1rem; --input-height: 1rem;

View file

@ -1,4 +1,4 @@
<div class="HeroSummaryCardV1"> <div class="StatsCardV1">
{{!-- * Header --}} {{!-- * Header --}}
<div class="header"> <div class="header">
<div class="image">Logo Image</div> <div class="image">Logo Image</div>

View file

@ -1,4 +1,4 @@
.ripcrypt .HeroSummaryCardV1 { .ripcrypt .StatsCardV1 {
/* Foundry Variable Tweaks */ /* Foundry Variable Tweaks */
--input-height: 1rem; --input-height: 1rem;

View file

@ -2,9 +2,9 @@
@import url("./CombinedHeroSheet/style.css"); @import url("./CombinedHeroSheet/style.css");
@import url("./DelveDiceHUD/style.css"); @import url("./DelveDiceHUD/style.css");
@import url("./DicePool/style.css"); @import url("./DicePool/style.css");
@import url("./HeroCraftCardV1/style.css"); @import url("./CraftCardV1/style.css");
@import url("./HeroSummaryCardV1/style.css"); @import url("./StatsCardV1/style.css");
@import url("./HeroSkillsCardV1/style.css"); @import url("./SkillsCardV1/style.css");
@import url("./RichEditor/style.css"); @import url("./RichEditor/style.css");
@import url("./popover.css"); @import url("./popover.css");
@ -17,9 +17,9 @@
margin: 0; margin: 0;
} }
.HeroSummaryCardV1, .StatsCardV1,
.HeroSkillsCardV1, .SkillsCardV1,
.HeroCraftCardV1 { .CraftCardV1 {
padding: 8px; padding: 8px;
/* height: 270px; */ /* height: 270px; */
width: 680px; width: 680px;