diff --git a/dev/dev.mjs b/dev/dev.mjs new file mode 100644 index 0000000..ccb796e --- /dev/null +++ b/dev/dev.mjs @@ -0,0 +1,2 @@ +// Hooks +import "./hooks/ready.mjs"; diff --git a/dev/hooks/ready.mjs b/dev/hooks/ready.mjs new file mode 100644 index 0000000..ce55a53 --- /dev/null +++ b/dev/hooks/ready.mjs @@ -0,0 +1,5 @@ +import { __ID__ } from "../../module/consts.mjs"; + +Hooks.on(`ready`, () => { + console.table(game.modules.get(__ID__).api.registered); +}); diff --git a/module.json b/module.json index 86fedc1..cd9209b 100644 --- a/module.json +++ b/module.json @@ -14,7 +14,8 @@ "maximum": 13 }, "esmodules": [ - "module/oft.mjs" + "module/oft.mjs", + "dev/dev.mjs" ], "styles": [ { diff --git a/module/hooks/oft.preventSetting.mjs b/module/hooks/oft.preventSetting.mjs index 31026ac..500dc8e 100644 --- a/module/hooks/oft.preventSetting.mjs +++ b/module/hooks/oft.preventSetting.mjs @@ -5,7 +5,8 @@ of incompatabilities for whatever reason. This can also be used internally within this module if we discover incompatabilites with systems and want to disable it on our side. -This file is more as documentation than anything at this point in time. +This file is meant more documentation than anything at this point in +time. -Call Signature: (settingKey: string) => {} +Call Signature: (settingKey: string) => (void | boolean) */ diff --git a/module/hooks/oft.settingStatuses.mjs b/module/hooks/oft.settingStatuses.mjs new file mode 100644 index 0000000..46bef18 --- /dev/null +++ b/module/hooks/oft.settingStatuses.mjs @@ -0,0 +1,13 @@ +/* +This hook is used to enable any modules that attempt to disable settings +or just want to investigate what settings are enabled to be able to get +a ping with information about which settings where registered entirely +and which weren't. The object that is passed to this is frozen and is +not meant to be edited as you cannot de-register nor prevent setting +registration from this hook. For that see the "oft.preventSetting" hook. + +This file is meant more documentation than anything at this point in +time. + +Call Signature: (settings: Record) => void +*/ diff --git a/module/oft.mjs b/module/oft.mjs index 53d3b77..a54bfc2 100644 --- a/module/oft.mjs +++ b/module/oft.mjs @@ -20,6 +20,9 @@ import { HotbarSettingsMenu } from "./apps/HotbarSettingsMenu.mjs"; // Misc import { __ID__ } from "./consts.mjs"; +const { deepFreeze } = foundry.utils; +const status = {}; + Hooks.on(`setup`, () => { game.settings.registerMenu(__ID__, `devSettings`, { @@ -29,8 +32,8 @@ Hooks.on(`setup`, () => { restricted: false, type: DevSettingsMenu, }); - addGlobalDocReferrer(); - autoUnpauseOnLoad(); + status.addGlobalDocReferrer = addGlobalDocReferrer(); + status.autoUnpauseOnLoad = autoUnpauseOnLoad(); game.settings.registerMenu(__ID__, `hotbarSettings`, { name: `OFT.menu.hotbarSettings.name`, @@ -39,13 +42,18 @@ Hooks.on(`setup`, () => { restricted: false, type: HotbarSettingsMenu, }); - hotbarButtonSize(); - hotbarButtonGap(); - repositionHotbar(); + status.hotbarButtonSize = hotbarButtonSize(); + status.hotbarButtonGap = hotbarButtonGap(); + status.repositionHotbar = repositionHotbar(); - chatSidebarBackground(); - startSidebarExpanded(); - startingSidebarTab(); - preventTokenRotation(); - preventUserConfigOpen(); + status.chatSidebarBackground = chatSidebarBackground(); + status.startSidebarExpanded = startSidebarExpanded(); + status.startingSidebarTab = startingSidebarTab(); + status.preventTokenRotation = preventTokenRotation(); + status.preventUserConfigOpen = preventUserConfigOpen(); + + Hooks.callAll(`oft.settingStatuses`, deepFreeze(status)); + game.modules.get(__ID__).api = deepFreeze({ + registered: status, + }); }); diff --git a/module/settings/addGlobalDocReferrer.mjs b/module/settings/addGlobalDocReferrer.mjs index d40b1eb..735eebc 100644 --- a/module/settings/addGlobalDocReferrer.mjs +++ b/module/settings/addGlobalDocReferrer.mjs @@ -33,4 +33,5 @@ export function addGlobalDocReferrer() { }); // #endregion Implementation + return true; }; diff --git a/module/settings/autoUnpauseOnLoad.mjs b/module/settings/autoUnpauseOnLoad.mjs index 9bf84b3..de8e2c7 100644 --- a/module/settings/autoUnpauseOnLoad.mjs +++ b/module/settings/autoUnpauseOnLoad.mjs @@ -9,7 +9,7 @@ export function autoUnpauseOnLoad() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; // #region Registration @@ -34,4 +34,6 @@ export function autoUnpauseOnLoad() { }; }); // #endregion Implementation + + return true; }; diff --git a/module/settings/chatSidebarBackground.mjs b/module/settings/chatSidebarBackground.mjs index 6fab03d..c9728e2 100644 --- a/module/settings/chatSidebarBackground.mjs +++ b/module/settings/chatSidebarBackground.mjs @@ -28,4 +28,6 @@ export function chatSidebarBackground() { document.body.classList.add(`${__ID__}-${key}`); }; // #endregion Implementation + + return true; }; diff --git a/module/settings/hotbarButtonGap.mjs b/module/settings/hotbarButtonGap.mjs index 1ec2648..35edd13 100644 --- a/module/settings/hotbarButtonGap.mjs +++ b/module/settings/hotbarButtonGap.mjs @@ -9,7 +9,7 @@ export function hotbarButtonGap() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; // #region Registration @@ -37,4 +37,6 @@ export function hotbarButtonGap() { const buttonGap = game.settings.get(__ID__, key); document.body.style.setProperty(`--hotbar-button-gap`, `${buttonGap}px`); // #endregion Implementation + + return true; }; diff --git a/module/settings/hotbarButtonSize.mjs b/module/settings/hotbarButtonSize.mjs index c960c66..53d61d5 100644 --- a/module/settings/hotbarButtonSize.mjs +++ b/module/settings/hotbarButtonSize.mjs @@ -9,7 +9,7 @@ export function hotbarButtonSize() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; // #region Registration @@ -37,4 +37,6 @@ export function hotbarButtonSize() { const hotbarSize = game.settings.get(__ID__, key); document.body.style.setProperty(`--hotbar-size`, `${hotbarSize}px`); // #endregion Implementation + + return true; }; diff --git a/module/settings/preventTokenRotation.mjs b/module/settings/preventTokenRotation.mjs index cff7ec5..8224b9f 100644 --- a/module/settings/preventTokenRotation.mjs +++ b/module/settings/preventTokenRotation.mjs @@ -8,7 +8,7 @@ export function preventTokenRotation() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; /** @type {number|null} */ @@ -39,6 +39,8 @@ export function preventTokenRotation() { hookID = Hooks.on(`preMoveToken`, preMoveTokenHandler); }; // #endregion Implementation + + return true; }; // #region Helpers diff --git a/module/settings/preventUserConfigOpen.mjs b/module/settings/preventUserConfigOpen.mjs index 5833bb2..9069b7e 100644 --- a/module/settings/preventUserConfigOpen.mjs +++ b/module/settings/preventUserConfigOpen.mjs @@ -8,7 +8,7 @@ export function preventUserConfigOpen() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; // #region Registration @@ -32,4 +32,6 @@ export function preventUserConfigOpen() { }; }); // #endregion Implementation + + return true; }; diff --git a/module/settings/repositionHotbar.mjs b/module/settings/repositionHotbar.mjs index f85f3ed..6da7621 100644 --- a/module/settings/repositionHotbar.mjs +++ b/module/settings/repositionHotbar.mjs @@ -9,7 +9,7 @@ export function repositionHotbar() { const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); - return; + return false; }; // #region Registration @@ -43,4 +43,6 @@ export function repositionHotbar() { uiPosition.insertAdjacentElement(`beforeend`, container); }; // #endregion Implementation + + return true; }; diff --git a/module/settings/startSidebarExpanded.mjs b/module/settings/startSidebarExpanded.mjs index 0e76033..455dbcc 100644 --- a/module/settings/startSidebarExpanded.mjs +++ b/module/settings/startSidebarExpanded.mjs @@ -26,4 +26,6 @@ export function startSidebarExpanded() { }; }); // #endregion Implementation + + return true; }; diff --git a/module/settings/startingSidebarTab.mjs b/module/settings/startingSidebarTab.mjs index b512164..27d71d6 100644 --- a/module/settings/startingSidebarTab.mjs +++ b/module/settings/startingSidebarTab.mjs @@ -55,4 +55,6 @@ export function startingSidebarTab() { }; }); // #endregion Implementation + + return true; };