oft/module/tweaks/preventTokenRotation.mjs

48 lines
1.2 KiB
JavaScript

import { SettingStatusEnum, status } from "../utils/SettingStatus.mjs";
import { __ID__ } from "../consts.mjs";
import { Logger } from "../utils/Logger.mjs";
import { preventTweakRegistration } from "../utils/preRegisterTweak.mjs";
export const key = `preventTokenRotation`;
export function preventTokenRotation() {
status[key] = SettingStatusEnum.Unknown;
if (preventTweakRegistration(key)) { 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