115 lines
3.2 KiB
TypeScript
115 lines
3.2 KiB
TypeScript
/* global Handlebars, game, TextEditor, WOD5E */
|
|
|
|
import { M5Skill } from "./module/M5Base";
|
|
import { M5Character } from "./module/actors/M5Character";
|
|
|
|
/**
|
|
* Define any helpers necessary for working with Handlebars
|
|
* @return {Promise}
|
|
*/
|
|
export const loadHelpers = async function () {
|
|
Handlebars.registerHelper("times", (n: number, block) => {
|
|
var accum = "";
|
|
for (let i = 0; i < n; ++i) accum += block.fn(i);
|
|
return accum;
|
|
});
|
|
|
|
Handlebars.registerHelper("array", (arr: any[], index: number) => {
|
|
return arr[index];
|
|
});
|
|
|
|
Handlebars.registerHelper("m5concat", (...values) => {
|
|
const options = values.pop();
|
|
const join = options.hash?.join || "";
|
|
//return new Handlebars.SafeString(values.join(join));
|
|
return values.map((val) => val.toString()).join(join);
|
|
});
|
|
|
|
Handlebars.registerHelper("add", (...values) => {
|
|
const options = values.pop();
|
|
return values.reduce((prev, cur) => prev + cur);
|
|
});
|
|
|
|
Handlebars.registerHelper("localizeMidgard", (str: string) => {
|
|
const template = Handlebars.compile("{{localize value}}");
|
|
return template({
|
|
value: "midgard5." + str,
|
|
});
|
|
});
|
|
|
|
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
|
|
const actor = (game as Game).actors.get(actorId) as M5Character;
|
|
return actor.skillBonus(skill).toString();
|
|
});
|
|
|
|
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
|
|
const actor = (game as Game).actors.get(actorId) as M5Character;
|
|
return actor.skillEw(skill).toString();
|
|
});
|
|
|
|
Handlebars.registerHelper("skill", (skillId: string) => {
|
|
return (game as Game).items.get(skillId);
|
|
});
|
|
|
|
Handlebars.registerHelper("itemValue", (id: string, path: string) => {
|
|
let obj = (game as Game).items.get(id);
|
|
path.split(".").forEach((p) => (obj = obj[p]));
|
|
return `${obj}`;
|
|
});
|
|
|
|
Handlebars.registerHelper("actorItemValue", (actorId: any, itemId: string, path: string, token?: boolean) => {
|
|
//console.log("actorItemValue", actorId, itemId, path)
|
|
const actor = (game as Game).actors.get(actorId);
|
|
let obj = actor.items.get(itemId)?.system;
|
|
path.split(".").forEach((p) => {
|
|
if (obj) obj = obj[p];
|
|
});
|
|
return `${obj}`;
|
|
});
|
|
|
|
Handlebars.registerHelper("icon", (relpath: string) => {
|
|
return `systems/midgard5/assets/icons/${relpath}`;
|
|
});
|
|
|
|
Handlebars.registerHelper("isSkillInList", (skillName: string, list: any) => {
|
|
for (let key in list) {
|
|
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
});
|
|
|
|
Handlebars.registerHelper("skillEwInList", (skillName: string, list: any) => {
|
|
for (let key in list) {
|
|
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
|
|
return list[key].calc.ew;
|
|
}
|
|
}
|
|
return false;
|
|
});
|
|
|
|
Handlebars.registerHelper("stripHtml", function (param) {
|
|
var regex = /(<([^>]+)>)/gi;
|
|
return param.replace(regex, "");
|
|
});
|
|
|
|
Handlebars.registerHelper("contains", (label: string, contains: string) => {
|
|
return label.toLowerCase().includes(contains.toLowerCase());
|
|
});
|
|
|
|
Handlebars.registerHelper("count", (object: any) => {
|
|
var length = 0;
|
|
for (var key in object) {
|
|
if (object.hasOwnProperty(key)) {
|
|
++length;
|
|
}
|
|
}
|
|
return length;
|
|
});
|
|
|
|
Handlebars.registerHelper("console", (object: any) => {
|
|
console.log(object);
|
|
});
|
|
};
|