All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

133 lines
4.6 KiB

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