Files
pokemon-foundry/pokemon.js
Nikolaj 0b617de0e3
2025-08-05 14:13:52 +02:00

114 lines
3.4 KiB
JavaScript

import { POKEMON } from "./modules/config.js";
import pokemonActor from "./modules/objects/pokemonActor.js";
import pokemonCharacterSheet from "./modules/sheets/pokemonCharacterSheet.js";
Hooks.once("init", async () => {
console.log("POKEMON | Initalizing Pokémon System");
// Setting up the Global Configuration Object
CONFIG.POKEMON = POKEMON;
CONFIG.INIT = true;
CONFIG.Actor.documentClass = pokemonActor;
// Register custom Sheets and unregister the start Sheets
// Items.unregisterSheet("core", ItemSheet);
const DocumentSheetConfig = foundry.applications.apps.DocumentSheetConfig;
DocumentSheetConfig.unregisterSheet(Actor, "core", foundry.appv1.sheets.ActorSheet);
DocumentSheetConfig.registerSheet(Actor, "pokemon", pokemonCharacterSheet, {
types: ["character"],
makeDefault: true,
label: "POKEMON.SheetClassCharacter"
})
// Load all Partial-Handlebar Files
preloadHandlebarsTemplates();
// Register Additional Handelbar Helpers
registerHandlebarsHelpers();
});
Hooks.once("ready", async () => {
// Finished Initalization Phase and release lock
CONFIG.INIT = false;
// Only execute when run as Gamemaster
if(!game.user.isGM) return;
});
function preloadHandlebarsTemplates() {
const templatePaths = [
"systems/pokemon/templates/partials/character-sheet-character.hbs",
"systems/pokemon/templates/partials/character-sheet-combat.hbs",
"systems/pokemon/templates/partials/character-sheet-inventory.hbs"
];
return foundry.applications.handlebars.loadTemplates(templatePaths);
};
function registerHandlebarsHelpers() {
Handlebars.registerHelper("symbol", function(s1) {
if (s1 == 0.5 || s1 == 0.25) {
return "½";
}
return s1;
});
Handlebars.registerHelper("upper", function(s1) {return s1.toUpperCase()});
Handlebars.registerHelper("short", function(s1) {return s1.slice(0,3).toUpperCase()});
Handlebars.registerHelper("equals", function(v1, v2) { return (v1 === v2)});
Handlebars.registerHelper("contains", function(element, search) { return (element.includes(search))});
Handlebars.registerHelper("concat", function(s1, s2, s3 = "") { return s1 + s2 + s3;});
Handlebars.registerHelper("isGreater", function(p1, p2) { return (p1 > p2)});
Handlebars.registerHelper("isEqualORGreater", function(p1, p2) { return (p1 >= p2)});
Handlebars.registerHelper("ifOR", function(conditional1, conditional2) { return (conditional1 || conditional2)});
Handlebars.registerHelper("doLog", function(value) { console.log(value)});
Handlebars.registerHelper("toBoolean", function(string) { return (string === "true")});
Handlebars.registerHelper('for', function(from, to, incr, content) {
let result = "";
for(let i = from; i < to; i += incr)
result += content.fn(i);
return result;
});
Handlebars.registerHelper("times", function(n, content) {
let result = "";
for(let i = 0; i < n; i++)
result += content.fn(i);
return result;
});
Handlebars.registerHelper("notEmpty", function(value) {
if (value == 0 || value == "0") return true;
if (value == null|| value == "") return false;
return true;
});
}
/* -------------------------------------------- */
/* General Functions */
/* -------------------------------------------- */