import PrismRPGItemSheet from "./base-item-sheet.mjs" export default class PrismRPGWeaponSheet extends PrismRPGItemSheet { /** @override */ static DEFAULT_OPTIONS = { classes: ["weapon"], position: { width: 620, }, window: { contentClasses: ["weapon-content"], }, } /** @override */ static PARTS = { main: { template: "systems/fvtt-prism-rpg/templates/weapon.hbs", }, } /** @override */ async _prepareContext() { const context = await super._prepareContext() context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true }) context.enrichedPassiveDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.passiveDescription, { async: true }) // Enrich descriptions for all maneuvers context.enrichedManeuvers = await Promise.all( this.document.system.maneuvers.map(async (maneuver) => ({ ...maneuver, enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(maneuver.description, { async: true }) })) ) return context } /** @override */ _onRender(context, options) { super._onRender(context, options) // Add event listeners for maneuver management this.element.querySelectorAll('[data-action="add-maneuver"]').forEach(el => { el.addEventListener("click", this._onAddManeuver.bind(this)) }) this.element.querySelectorAll('[data-action="delete-maneuver"]').forEach(el => { el.addEventListener("click", this._onDeleteManeuver.bind(this)) }) } async _onAddManeuver(event) { event.preventDefault() const maneuvers = [...this.document.system.maneuvers] maneuvers.push({ name: "", description: "" }) await this.document.update({ "system.maneuvers": maneuvers }) } async _onDeleteManeuver(event) { event.preventDefault() const index = parseInt(event.currentTarget.closest("[data-maneuver-index]").dataset.maneuverIndex) const maneuvers = this.document.system.maneuvers.filter((_, i) => i !== index) await this.document.update({ "system.maneuvers": maneuvers }) } }