RC-106 | Add equipped armour display

This commit is contained in:
Oliver-Akins 2025-01-17 19:24:53 -07:00
parent 07f3b24897
commit d1ce144114
5 changed files with 67 additions and 0 deletions

View file

@ -72,6 +72,7 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
ctx = await HeroSummaryCardV1.prepareGuts(ctx);
ctx = await HeroSummaryCardV1.prepareWeapons(ctx);
ctx = await HeroSummaryCardV1.prepareArmor(ctx);
ctx = await HeroSummaryCardV1.prepareFatePath(ctx);
ctx = await HeroSummaryCardV1.prepareAbilityRow(ctx);
ctx = await HeroSummaryCardV1.prepareSpeed(ctx);
@ -136,6 +137,20 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
return ctx;
};
static async prepareArmor(ctx) {
ctx.armours = {};
const equipped = ctx.actor.system.equippedArmour;
for (const slot of gameTerms.Anatomy) {
const item = equipped[slot];
ctx.armours[slot] = {
name: item?.name ?? ``,
uuid: item?.uuid ?? ``,
defense: 0,
};
};
return ctx;
};
static async prepareWeapons(ctx) {
const limit = ctx.actor.system.limit.weapons;
const embedded = ctx.actor.itemTypes.weapon;

View file

@ -147,4 +147,37 @@ export class HeroData extends foundry.abstract.TypeDataModel {
run: (this.ability.gait + 3) * 2,
};
};
// #region Getters
get equippedArmour() {
const armours = this.parent.itemTypes.armour;
const slots = Object.fromEntries(
gameTerms.Anatomy.map(v => [v, null]),
);
for (const armour of armours) {
if (!armour.system.equipped) { continue };
for (const locationTag of [...armour.system.location.values()]) {
const location = locationTag.toLowerCase();
slots[location] = armour;
};
};
return slots;
};
get equippedShield() {
return null;
};
get defense() {
const defenses = {};
const armour = this.equippedArmour;
for (const slot in armour) {
defenses[slot] = armour[slot]?.system.protection ?? 0;
};
// TODO: add shield defenses
return defenses;
};
// #endregion
};

View file

@ -20,6 +20,11 @@ export class ArmourData extends foundry.abstract.TypeDataModel {
required: true,
},
),
equipped: new fields.BooleanField({
initial: false,
required: true,
nullable: false,
}),
};
};