import { debug } from "../util.js"; import { MODULE_NAME } from "../consts.js"; import ChatMerge from "../dorako-ux/chat-merge.js"; import ChatRollPrivacy from "../dorako-ux/chat-rolltype-buttons.js"; function injectCSS(filename) { const head = document.getElementsByTagName("head")[0]; const mainCss = document.createElement("link"); mainCss.setAttribute("rel", "stylesheet"); mainCss.setAttribute("type", "text/css"); mainCss.setAttribute("href", "modules/pf2e-dorako-ux/styles/" + filename + ".css"); mainCss.setAttribute("media", "all"); head.insertBefore(mainCss, head.lastChild); } Hooks.once("ready", () => { if (!game.settings.get("pf2e-dorako-ux", "moving.center-hotbar")) return; document.getElementById("ui-bottom").classList.add("centered"); }); Hooks.once("ready", () => { if (game.settings.get("pf2e-dorako-ux", "hiding.no-logo")) { $("#logo")[0].style.setProperty("display", "none", "important"); } }); Hooks.once("ready", () => { if (game.settings.get("pf2e-dorako-ux", "hiding.no-compendium-banner-images")) { $("body").addClass("no-compendium-banner-images"); } }); Hooks.on("renderChatLogPF2e", (app, html, data) => { if (game.settings.get("pf2e-dorako-ux", "hiding.no-chat-control-icon")) { html.find("#chat-controls")[0].classList.add("no-chat-control-icon"); } }); Hooks.once("renderSidebar", () => { const noCards = game.settings.get("pf2e-dorako-ux", "hiding.no-cards"); if (!noCards) return; $(".item[data-tab=cards]").addClass("dorako-display-none"); }); Hooks.once("init", async () => { debug(`INIT`); debug(`REGISTERING SETTINGS`); debug(`INITIALIZING APPLICATIONS`); if (game.settings.get("pf2e-dorako-ux", "moving.chat-merge")) { ChatMerge.init(); } if (game.settings.get("pf2e-dorako-ux", "moving.adjust-chat-controls")) { ChatRollPrivacy.setup(); ChatRollPrivacy.init(); } debug(`INJECTING CSS VARIABLES`); injectCSS("fonts"); const root = document.querySelector(":root").style; root.setProperty("--avatar-size", game.settings.get("pf2e-dorako-ux", "avatar.size").toString() + "px"); root.setProperty("--control-size", game.settings.get("pf2e-dorako-ux", "other.control-size").toString() + "px"); root.setProperty( "--sidebar-tab-size", game.settings.get("pf2e-dorako-ux", "other.sidebar-tab-size").toString() + "px" ); root.setProperty("--controls-alignment", game.settings.get("pf2e-dorako-ux", "moving.controls-alignment").toString()); debug(`INIT COMPLETE`); }); Hooks.once("ready", (app, html, data) => { if (!game.settings.get(`${MODULE_NAME}`, "hiding.start-sidebar-collapsed")) return; ui.sidebar.collapse(); }); Hooks.once("ready", (app, html, data) => { if (!game.settings.get(`${MODULE_NAME}`, "hiding.start-navigation-collapsed")) return; ui.nav.collapse(); }); Hooks.on("getItemSheetPF2eHeaderButtons", (sheet, buttons) => { if (!game.settings.get(`${MODULE_NAME}`, "other.send-to-chat")) { return; } buttons.unshift({ label: `${MODULE_NAME}.text.send-to-chat`, class: "send", icon: "fas fa-comment-alt", onclick: async () => { if (sheet.document.actor) { await sheet.document.toChat(); // Can post directly } else { const json = sheet.document.toJSON(); const actor = canvas.tokens.controlled[0]?.actor ?? // Selected token's corresponding actor game.user?.character ?? // Assigned actor new Actor({ name: game.user.name, type: "character" }); // Dummy actor fallback await new sheet.document.constructor(json, { parent: actor }).toChat(); } }, }); }); Hooks.on("renderCombatTracker", addScalingToCombatTrackerAvatars); function addScalingToCombatTrackerAvatars(app, html, data) { const combatImagesActive = game.modules.get("combat-tracker-images")?.active; $(".combatant", html).each(function () { let id = this.dataset.combatantId; let combatant = game.combat.combatants.get(id); let scale = combatant.token.texture.scaleX; let tokenImageElem = this.getElementsByClassName("token-image")[0]; if (scale < 1 || (combatImagesActive && combatant.actor.getFlag("combat-tracker-images", "trackerImage"))) { scale = 1; } tokenImageElem.setAttribute("style", "transform: scale(" + Math.abs(scale) + ")"); }); } for (const appName of ["JournalSheet", "JournalPageSheet"]) { Hooks.on("render" + appName, (app, html, data) => { const isDalvyn = game.settings.get("pf2e-dorako-ux", "other.skin-crb-journal"); if (!isDalvyn) return; if (app.id.includes("Compendium-pf2e-criticaldeck")) return; html.closest(".app").find(".journal-entry-content").addClass("dalvyn-journal"); }); }