Files
fvtt-chroniques-de-l-etrange/src/ui/helpers.js

109 lines
4.5 KiB
JavaScript

import { MAGICS } from "../config/constants.js"
export function registerHandlebarsHelpers() {
const { Handlebars } = globalThis
if (!Handlebars) return
Handlebars.registerHelper("select", function (selected, options) {
const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected))
const rgx = new RegExp(` value=["']${escapedValue}["']`)
const html = options.fn(this)
return html.replace(rgx, "$& selected")
})
Handlebars.registerHelper("getMagicBackground", function (magic) {
return game.i18n.localize(MAGICS[magic]?.background ?? "")
})
Handlebars.registerHelper("getMagicLabel", function (magic) {
return game.i18n.localize(MAGICS[magic]?.label ?? "")
})
Handlebars.registerHelper("getMagicAspectLabel", function (magic) {
return game.i18n.localize(MAGICS[magic]?.aspectlabel ?? "")
})
Handlebars.registerHelper("getMagicSpecialityLabel", function (magic, speciality) {
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.label ?? "")
})
Handlebars.registerHelper("getMagicSpecialityClassIcon", function (magic, speciality) {
return MAGICS[magic]?.speciality?.[speciality]?.classicon ?? ""
})
Handlebars.registerHelper("getMagicSpecialityIcon", function (magic, speciality) {
return MAGICS[magic]?.speciality?.[speciality]?.icon ?? ""
})
Handlebars.registerHelper("getMagicSpecialityElementIcon", function (magic, speciality) {
return MAGICS[magic]?.speciality?.[speciality]?.elementicon ?? ""
})
Handlebars.registerHelper("getMagicSpecialityLabelIcon", function (magic, speciality) {
return MAGICS[magic]?.speciality?.[speciality]?.labelicon ?? ""
})
Handlebars.registerHelper("getMagicSpecialityLabelElement", function (magic, speciality) {
return game.i18n.localize(MAGICS[magic]?.speciality?.[speciality]?.labelelement ?? "")
})
Handlebars.registerHelper("getMagicAspectIcon", function (magic) {
const icons = {
internalcinnabar: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp",
alchemy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp",
masteryoftheway: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp",
exorcism: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp",
geomancy: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp",
}
return icons[magic] ?? ""
})
Handlebars.registerHelper("getElementIcon", function (aspect) {
const icons = {
metal: "/systems/fvtt-chroniques-de-l-etrange/images/cde_metal.webp",
water: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp",
earth: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp",
fire: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp",
wood: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp",
// legacy French keys
eau: "/systems/fvtt-chroniques-de-l-etrange/images/cde_eau.webp",
terre: "/systems/fvtt-chroniques-de-l-etrange/images/cde_terre.webp",
feu: "/systems/fvtt-chroniques-de-l-etrange/images/cde_feu.webp",
bois: "/systems/fvtt-chroniques-de-l-etrange/images/cde_bois.webp",
}
return icons[aspect] ?? ""
})
Handlebars.registerHelper("getOrientationIcon", function (orientation) {
const icons = {
yin: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yin.webp",
yang: "/systems/fvtt-chroniques-de-l-etrange/images/cde_yang.webp",
yinyang: "/systems/fvtt-chroniques-de-l-etrange/images/yin_yang.webp",
}
return icons[orientation] ?? ""
})
Handlebars.registerHelper("getOrientationLabel", function (orientation) {
const keys = {
yin: "CDE.OrientationYin",
yang: "CDE.OrientationYang",
yinyang: "CDE.OrientationYinYang",
}
return game.i18n.localize(keys[orientation] ?? "CDE.Orientation")
})
Handlebars.registerHelper("getActivationLabel", function (activation) {
const keys = {
"action-attack": "CDE.ActivationAttack",
"action-defense": "CDE.ActivationDefense",
"action-aid": "CDE.ActivationAid",
"action-attack-defense": "CDE.ActivationAttackOrDefense",
reaction: "CDE.ActivationReaction",
dice: "CDE.ActivationDice",
"damage-inflicted": "CDE.ActivationDamageInflicted",
"damage-received": "CDE.ActivationDamageReceived",
}
return game.i18n.localize(keys[activation] ?? "CDE.Activation")
})
}