import { SettingStatusEnum, status } from "../utils/SettingStatus.mjs"; import { __ID__ } from "../consts.mjs"; import { Logger } from "../utils/Logger.mjs"; const key = `preventTokenRotation`; export function preventTokenRotation() { status[key] = SettingStatusEnum.Unknown; const prevented = Hooks.call(`${__ID__}.preventSetting`, key); if (!prevented) { Logger.log(`Preventing setting "${key}" from being registered`); status[key] = SettingStatusEnum.Blocked; return; }; /** @type {number|null} */ let hookID = null; // #region Registration Logger.log(`Registering setting: ${key}`); game.settings.register(__ID__, key, { name: `OFT.setting.${key}.name`, hint: `OFT.setting.${key}.hint`, scope: `world`, type: Boolean, default: true, config: true, requiresReload: false, onChange: (newValue) => { if (newValue) { hookID = Hooks.on(`preMoveToken`, preMoveTokenHandler); } else if (hookID != null) { Hooks.off(`preMoveToken`, hookID); }; }, }); // #endregion Registration // #region Implementation if (game.settings.get(__ID__, key)) { hookID = Hooks.on(`preMoveToken`, preMoveTokenHandler); }; // #endregion Implementation status[key] = SettingStatusEnum.Registered; }; // #region Helpers function preMoveTokenHandler(_token, update) { update.autoRotate = false; }; // #endregion Helpers