|
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");
|
|
});
|
|
}
|