|
|
- import { lookupThemeAndSchemeForKey } from "./ui-theme.js";
-
- Hooks.on("renderChatMessage", (chatMessage, html, messageData) => {
- if (html[0].hasAttribute("style")) {
- html.css("border-color", "");
- }
- });
-
- // Chat cards
- Hooks.on("renderChatMessage", (chatMessage, html, messageData) => {
- const isNarratorToolsMessage = chatMessage.flags["narrator-tools"];
- const isMLDRoundMarker = chatMessage.flags["monks-little-details"]?.roundmarker;
- const isMCDRoundMarker = chatMessage.flags["monks-combat-details"]?.roundmarker;
- const isRoundMarker = isMLDRoundMarker || isMCDRoundMarker;
- if (isNarratorToolsMessage || isRoundMarker) {
- return;
- }
-
- let html0 = html[0];
- html0.style.setProperty("--player-color", chatMessage?.user?.color ?? "#DAC0FB");
-
- const isSecretDisposition =
- game?.scenes?.get(chatMessage?.speaker?.scene)?.tokens?.get(chatMessage?.speaker?.token)?.disposition == -2;
- const { dorakoUiTheme, colorScheme } =
- chatMessage?.actor?.alliance === "opposition" && !isSecretDisposition
- ? lookupThemeAndSchemeForKey(game.settings.get("pf2e-dorako-ui", "theme.chat-message-opposition-theme"))
- : lookupThemeAndSchemeForKey(game.settings.get("pf2e-dorako-ui", "theme.chat-message-standard-theme"));
- html0.dataset.theme = dorakoUiTheme;
- html0.dataset.colorScheme = colorScheme;
- html0.dataset.dorakoUiScope = "unlimited";
-
- const headerStyle = game.settings.get("pf2e-dorako-ui", "theme.chat-message-header-style");
- if (dorakoUiTheme === "crb" && headerStyle !== "none") {
- html0.dataset.hasHeader = "";
- }
- themeHeader(html, chatMessage);
- });
-
- function themeHeader(html, message) {
- let messageHeader = html.find(".message-header")[0];
- const headerColor = getHeaderColor(html, message);
- messageHeader.style.setProperty("--header-color", headerColor);
-
- let textColTheme = calcHeaderTextColor(headerColor);
- html[0].dataset.headerTextColorScheme = textColTheme;
-
- // some modules add different timestamps and hide the original, like dfce-simple-timestamp
- let time = html.find("time")[0];
- if (time) {
- time.classList.add("header-meta");
- }
- }
-
- const headerStyleColors = {
- none: "none",
- fallback: "#DAC0FB",
- blue: "#191F65",
- green: "#002A17",
- red: "#540C06",
- }
-
- function getHeaderColor(html, message) {
- const headerStyle = game.settings.get("pf2e-dorako-ui", "theme.chat-message-header-style");
- if (headerStyle === "tint") {
- return message?.user?.color ?? headerStyleColors.fallback;
- }
- return headerStyleColors[headerStyle] ?? headerStyleColors.fallback;
- }
-
- function invertColor(color) {
- return color === "dark" ? "light" : "dark";
- }
-
- function calcHeaderTextColor(headerColor) {
- if (headerColor === headerStyleColors.none) {
- return "dark"
- }
-
- var r = parseInt(headerColor.substr(1, 2), 16);
- var g = parseInt(headerColor.substr(3, 2), 16);
- var b = parseInt(headerColor.substr(5, 2), 16);
- var yiq = (r * 299 + g * 587 + b * 114) / 1000;
-
- if (yiq >= 180) {
- return "dark";
- } else {
- return "light";
- }
- }
|