Files
fvtt-oath-hammer/module/applications/sheets/regiment-sheet.mjs

81 lines
3.0 KiB
JavaScript

import OathHammerItemSheet from "./base-item-sheet.mjs"
import { SYSTEM } from "../../config/system.mjs"
export default class OathHammerRegimentSheet extends OathHammerItemSheet {
/** @override */
static DEFAULT_OPTIONS = {
classes: ["regiment"],
position: { width: 560, height: "auto" },
window: { contentClasses: ["regiment-content"] },
actions: {
addSkill: OathHammerRegimentSheet.#onAddSkill,
removeSkill: OathHammerRegimentSheet.#onRemoveSkill,
addAttack: OathHammerRegimentSheet.#onAddAttack,
removeAttack:OathHammerRegimentSheet.#onRemoveAttack,
addTrait: OathHammerRegimentSheet.#onAddTrait,
removeTrait: OathHammerRegimentSheet.#onRemoveTrait,
},
}
/** @override */
static PARTS = {
main: { template: "systems/fvtt-oath-hammer/templates/item/regiment-sheet.hbs" },
}
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
context.colorChoices = Object.fromEntries(
Object.entries(SYSTEM.DICE_COLOR_TYPES).map(([k, v]) => [k, game.i18n.localize(v)])
)
context.dicePoolChoices = Object.fromEntries(
Array.from({ length: 21 }, (_, i) => [i, String(i)])
)
context.apChoices = Object.fromEntries(
Array.from({ length: 7 }, (_, i) => [i, String(i)])
)
return context
}
// ── Array helpers ────────────────────────────────────────────────────────────
static async #onAddSkill() {
const skills = foundry.utils.deepClone(this.document.system.skills ?? [])
skills.push({ name: "", value: 2, colorDiceType: "white" })
await this.document.update({ "system.skills": skills })
}
static async #onRemoveSkill(event, target) {
const idx = parseInt(target.dataset.idx, 10)
const skills = foundry.utils.deepClone(this.document.system.skills ?? [])
skills.splice(idx, 1)
await this.document.update({ "system.skills": skills })
}
static async #onAddAttack() {
const attacks = foundry.utils.deepClone(this.document.system.attacks ?? [])
attacks.push({ name: "", damageDice: 6, colorDiceType: "white", ap: 0, special: "" })
await this.document.update({ "system.attacks": attacks })
}
static async #onRemoveAttack(event, target) {
const idx = parseInt(target.dataset.idx, 10)
const attacks = foundry.utils.deepClone(this.document.system.attacks ?? [])
attacks.splice(idx, 1)
await this.document.update({ "system.attacks": attacks })
}
static async #onAddTrait() {
const traits = foundry.utils.deepClone(this.document.system.traits ?? [])
traits.push({ name: "", description: "" })
await this.document.update({ "system.traits": traits })
}
static async #onRemoveTrait(event, target) {
const idx = parseInt(target.dataset.idx, 10)
const traits = foundry.utils.deepClone(this.document.system.traits ?? [])
traits.splice(idx, 1)
await this.document.update({ "system.traits": traits })
}
}