50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
import { __ID__ } from "../consts.mjs";
|
|
import { Logger } from "../utils/Logger.mjs";
|
|
|
|
const key = `preventTokenRotation`;
|
|
|
|
export function preventTokenRotation() {
|
|
|
|
const prevented = Hooks.call(`${__ID__}.preventSetting`, key);
|
|
if (!prevented) {
|
|
Logger.log(`Preventing setting "${key}" from being registered`);
|
|
return false;
|
|
};
|
|
|
|
/** @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
|
|
|
|
return true;
|
|
};
|
|
|
|
// #region Helpers
|
|
function preMoveTokenHandler(_token, update) {
|
|
update.autoRotate = false;
|
|
};
|
|
// #endregion Helpers
|