60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
import { BaseItemSheetL5r5e } from "./base-item-sheet.js";
|
|
|
|
/** Mode Invocation values per invocation type */
|
|
const INVOCATION_MODE = {
|
|
general: 3,
|
|
neutre: 0,
|
|
precis: -3,
|
|
};
|
|
|
|
/**
|
|
* Sheet for Mot d'Invocation items (Chiaroscuro).
|
|
* @extends {BaseItemSheetL5r5e}
|
|
*/
|
|
export class MotInvocationSheetL5r5e extends BaseItemSheetL5r5e {
|
|
/** @override */
|
|
static get defaultOptions() {
|
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
|
classes: ["l5r5e", "sheet", "mot-invocation"],
|
|
template: CONFIG.l5r5e.paths.templates + "items/mot_invocation/mot-invocation-sheet.html",
|
|
width: 500,
|
|
height: 360,
|
|
});
|
|
}
|
|
|
|
/** @override */
|
|
async getData(options = {}) {
|
|
const sheetData = await super.getData(options);
|
|
|
|
// Build invocation types list from i18n
|
|
const invTypes = game.l5r5e.HelpersL5r5e.getLocalizedRawObject("l5r5e.chiaroscuro.technique.invocation_types") ?? {};
|
|
sheetData.data.invocationTypesList = [{ id: "", label: "—" }].concat(
|
|
Object.entries(invTypes).map(([id, label]) => ({ id, label }))
|
|
);
|
|
|
|
sheetData.data.enrichedHtml = {
|
|
description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(
|
|
sheetData.data.system.description ?? "",
|
|
{ async: true }
|
|
),
|
|
};
|
|
|
|
return sheetData;
|
|
}
|
|
|
|
/** @override */
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
|
|
if (!this.isEditable) return;
|
|
|
|
html.find("#mot_invocation_type").on("change", async (event) => {
|
|
const type = event.target.value;
|
|
const mode = INVOCATION_MODE[type] ?? 0;
|
|
// Update stored value and refresh display
|
|
await this.object.update({ system: { invocation_type: type, mode_invocation: mode } });
|
|
this.render(true);
|
|
});
|
|
}
|
|
}
|