109 lines
4.5 KiB
JavaScript
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")
|
|
})
|
|
}
|