Skip to content

Commit

Permalink
Oooo-wee.
Browse files Browse the repository at this point in the history
  • Loading branch information
Eunomiac committed Dec 31, 2023
1 parent 740c3d0 commit edd2f4a
Show file tree
Hide file tree
Showing 57 changed files with 1,681 additions and 692 deletions.
49 changes: 46 additions & 3 deletions css/style.min.css
Original file line number Diff line number Diff line change
Expand Up @@ -9582,7 +9582,10 @@ template {
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-container .clock[data-value="12"][data-max="12"] .clock-glow, :root body.vtt.game.system-eunos-blades #clocks-overlay .clock-container .clock[data-value="12"][data-max="12"] .clock-fill {
clip-path: polygon(50% 50%, 50% 0, 100% 0, 100% 100%, 0 100%, 0 0, 50% 0, 50% 50%);
}
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key[data-is-showing-controls=false] .clock-controls {
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key-container.controls-hidden .clock-key-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key-container.controls-hidden .clock-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key-controls,
Expand Down Expand Up @@ -9707,6 +9710,7 @@ template {
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key-container {
height: calc(0.5 * var(--key-height));
width: calc(0.5 * var(--key-width));
visibility: hidden;
}
:root body.vtt.game.system-eunos-blades #clocks-overlay .clock-key-container.active-key {
min-width: 200px;
Expand Down Expand Up @@ -23373,7 +23377,10 @@ template {
:root body.vtt.game.system-eunos-blades .app.window-app .clock-container .clock[data-value="12"][data-max="12"] .clock-glow, :root body.vtt.game.system-eunos-blades .app.window-app .clock-container .clock[data-value="12"][data-max="12"] .clock-fill {
clip-path: polygon(50% 50%, 50% 0, 100% 0, 100% 100%, 0 100%, 0 0, 50% 0, 50% 50%);
}
:root body.vtt.game.system-eunos-blades .app.window-app .clock-key[data-is-showing-controls=false] .clock-controls {
:root body.vtt.game.system-eunos-blades .app.window-app .clock-key-container.controls-hidden .clock-key-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app .clock-key-container.controls-hidden .clock-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app .clock-key-controls,
Expand Down Expand Up @@ -25322,7 +25329,10 @@ template {
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-container .clock[data-value="12"][data-max="12"] .clock-glow, :root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-container .clock[data-value="12"][data-max="12"] .clock-fill {
clip-path: polygon(50% 50%, 50% 0, 100% 0, 100% 100%, 0 100%, 0 0, 50% 0, 50% 50%);
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-key[data-is-showing-controls=false] .clock-controls {
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-key-container.controls-hidden .clock-key-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-key-container.controls-hidden .clock-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet .window-content .clock-key-container .clock-key-controls,
Expand Down Expand Up @@ -25630,6 +25640,39 @@ template {
width: 120px;
--clock-size: 80px;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-controls, :root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-controls {
display: none !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container {
height: 100px;
width: 100px;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key {
transform: translate(-50%, -50%) !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container {
height: 0px !important;
width: 0px !important;
transform: none !important;
top: 0 !important;
left: 0 !important;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container .key-image {
display: none;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container .clock-container {
height: 100px;
width: 100px;
top: 50px;
left: 50px;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container .clock-container .clock, :root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container .clock-container .clock > * {
height: 100px;
width: 100px;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .healing-clock .clock-key-container .clock-key .key-image-container .clock-container .clock-bg {
display: none;
}
:root body.vtt.game.system-eunos-blades .app.window-app.sheet.actor.pc .window-content form .sheet-root section.harm-armor > table > tbody > tr .armor-uses {
padding: 0 0.625rem;
width: 100px;
Expand Down
49 changes: 6 additions & 43 deletions module/blades.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
// #region ▮▮▮▮▮▮▮ IMPORTS ▮▮▮▮▮▮▮ ~
import C, { ActionTrait, ClockColor, AttributeTrait, RollType, ConsequenceType } from "./core/constants.js";
import C, { ActionTrait, AttributeTrait, RollType, ConsequenceType } from "./core/constants.js";
import registerSettings, { initTinyMCEStyles, initCanvasStyles, initDOMStyles } from "./core/settings.js";
import { registerHandlebarHelpers, preloadHandlebarsTemplates } from "./core/helpers.js";
import BladesChat from "./classes/BladesChat.js";
import U from "./core/utilities.js";
import logger from "./core/logger.js";
import G, { Initialize as GsapInitialize } from "./core/gsap.js";
import BladesClock, { BladesClockKey } from "./classes/BladesClock.js";
import BladesClockKey from "./classes/BladesClocks.js";
import BladesDirector from "./classes/BladesDirector.js";
import BladesConsequence from "./classes/BladesConsequence.js";
import BladesScene from "./classes/BladesScene.js";
import BladesActorProxy, { BladesActor, BladesPC, BladesCrew, BladesNPC, BladesFaction } from "./documents/BladesActorProxy.js";
import BladesItemProxy, { BladesItem, BladesClockKeeper, BladesGMTracker, BladesLocation, BladesScore, BladesProject } from "./documents/BladesItemProxy.js";
import BladesItemSheet from "./sheets/item/BladesItemSheet.js";
Expand Down Expand Up @@ -478,45 +480,6 @@ class GlobalGetter {
};
BladesRoll.NewRoll(conf);
}
async addClockKey(keyName, clockNames) {
const { ClockKeeper: CK } = game.eunoblades ?? {};
if (!CK) {
return undefined;
}
const clocksData = [];
const [curClock] = U.sample(clockNames);
const clocks = [];
while (clockNames.length) {
const name = clockNames.shift();
const [color] = U.sample([ClockColor.white, ClockColor.red, ClockColor.yellow, ClockColor.cyan]);
const [max] = U.sample([2, 3, 4, 5, 6, 8, 10, 12]);
let value;
if (curClock === name) {
value = U.randInt(1, max - 1);
}
else if (clockNames.includes(curClock)) {
value = max;
}
else {
value = 0;
}
clocksData.push({ name, color, value, max });
}
const clockKey = await CK.addClockKey({
sceneID: game.scenes.current?.id,
name: keyName
}, clocksData.shift());
if (!clockKey) {
return undefined;
}
while (clocksData.length) {
await clockKey.addClock(clocksData.shift());
}
return {
key: clockKey,
clocks
};
}
get clockKeys() { return game.eunoblades.ClockKeeper?.clockKeys; }
}
// #region Globals: Exposing Functionality to Global Scope ~
Expand All @@ -528,6 +491,7 @@ class GlobalGetter {
// updateFactions,
// updateDescriptions,
// updateRollMods,
BladesScene,
BladesDirector,
BladesActor,
BladesPC,
Expand All @@ -537,7 +501,6 @@ class GlobalGetter {
BladesPCSheet,
BladesCrewSheet,
BladesFactionSheet,
BladesClock,
BladesClockKey,
BladesNPCSheet,
BladesActiveEffect,
Expand Down Expand Up @@ -567,7 +530,6 @@ class GlobalGetter {
Hooks.once("init", async () => {
// Initialize Game object
game.eunoblades = {
Clocks: new Collection(),
ClockKeys: new Collection(),
Consequences: new Collection(),
Director: BladesDirector.getInstance()
Expand All @@ -580,6 +542,7 @@ Hooks.once("init", async () => {
GsapInitialize();
CONFIG.Item.documentClass = BladesItemProxy;
CONFIG.Actor.documentClass = BladesActorProxy;
CONFIG.Scene.documentClass = BladesScene;
CONFIG.ChatMessage.documentClass = BladesChat;
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Expand Down
28 changes: 26 additions & 2 deletions module/classes/BladesChat.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
// #region IMPORTS ~
import { ApplyTooltipAnimations, ApplyConsequenceAnimations } from "../core/gsap.js";
import BladesConsequence from "./BladesConsequence.js";
// #endregion
class BladesChat extends ChatMessage {
// static override defineSchema() {
// return Object.assign(super.defineSchema(), {
// csqData: new foundry.data.fields.ObjectField()
// });
// }
static Initialize() {
// let lastMessageID: string|false = Array.from(game.messages).pop()?.id ?? "";
Hooks.on("renderChatMessage", (_msg, html) => {
Expand All @@ -28,7 +33,9 @@ class BladesChat extends ChatMessage {
static async ConstructRollOutput(rollInst) {
const messageData = {
speaker: rollInst.getSpeaker(BladesChat.getSpeaker()),
content: await rollInst.getResultHTML("")
content: await rollInst.getResultHTML(""),
type: CONST.CHAT_MESSAGE_TYPES.ROLL,
csqData: rollInst.csqData
};
const chatMessage = await BladesChat.create(messageData, {});
await chatMessage.update({ content: await rollInst.getResultHTML(chatMessage.id) });
Expand All @@ -38,8 +45,25 @@ class BladesChat extends ChatMessage {
_rollInst;
get rollInst() { return this._rollInst; }
set rollInst(rollInst) { this._rollInst = rollInst; }
get elem() { return $("#chat-log").find(`.chat-message[data-message-id="${this.id}"]`)[0]; }
get isRollResult() { return this.type === CONST.CHAT_MESSAGE_TYPES.ROLL; }
constructor(data) {
super(data);
}
async reRender(html) {
this.update({ content: html });
}
async render(force) {
await super.render(force);
if (!this.elem) {
eLog.error("BladesChat", `No BladesChat.elem found for id ${this.id}.`);
return;
}
const elem$ = $(this.elem);
ApplyTooltipAnimations(elem$);
ApplyConsequenceAnimations(elem$);
BladesConsequence.ApplyChatListeners(elem$);
elem$.addClass("display-ok");
}
}
export default BladesChat;
Loading

0 comments on commit edd2f4a

Please sign in to comment.