81 lines
3.0 KiB
JavaScript
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 })
|
|
}
|
|
}
|