diff --git a/src/main.js b/src/main.js index 364a61a..c286f8f 100644 --- a/src/main.js +++ b/src/main.js @@ -3,6 +3,7 @@ import {getRangesFromSpeedProvider, getUnreachableColorFromSpeedProvider, initApi, registerModule, registerSystem} from "./api.js" import {getHexSizeSupportTokenGridCenter} from "./compatibility.js" import {measure, moveTokens, onMouseMove} from "./foundry_imports.js" +import {performMigrations} from "./migration.js" import {registerSettings, settingsKey} from "./settings.js" import {SpeedProvider} from "./speed_provider.js" @@ -22,6 +23,7 @@ Hooks.once("init", () => { }) Hooks.once("ready", () => { + performMigrations() Hooks.callAll("dragRuler.ready", SpeedProvider) }) diff --git a/src/migration.js b/src/migration.js new file mode 100644 index 0000000..4f48888 --- /dev/null +++ b/src/migration.js @@ -0,0 +1,27 @@ +import {settingsKey} from "./settings.js" + +const currentDataVersion = "1.3.0" + +export function performMigrations() { + if (!game.user.isGM) + return + + let dataVersion = game.settings.get(settingsKey, "dataVersion") + if (dataVersion === "fresh install") { + // Migration from unnamed version. TODO Remove this in a future version + let speedAttribute = game.settings.storage.get("world").get(`${settingsKey}.speedAttribute`) + if (speedAttribute) + speedAttribute = speedAttribute.slice(1, speedAttribute.length - 1) + const speedAttributeDefault = game.settings.get(settingsKey, "speedProviders.native.setting.speedAttribute") + if (speedAttribute !== speedAttributeDefault) + game.settings.set(settingsKey, "speedProviders.native.setting.speedAttribute", speedAttribute) + + let dashMultiplier = game.settings.storage.get("world").get(`${settingsKey}.dashMultiplier`) + const dashMultiplierDefault = game.settings.get(settingsKey, "speedProviders.native.setting.dashMultiplier") + if (dashMultiplier !== dashMultiplierDefault) + game.settings.set(settingsKey, "speedProviders.native.setting.dashMultiplier", dashMultiplier) + // End of unnamed version migration code + game.settings.set(settingsKey, "dataVersion", currentDataVersion) + return + } +} diff --git a/src/settings.js b/src/settings.js index 7687321..c878668 100644 --- a/src/settings.js +++ b/src/settings.js @@ -4,6 +4,13 @@ import {SpeedProvider} from "./speed_provider.js" export const settingsKey = "drag-ruler"; export function registerSettings() { + game.settings.register(settingsKey, "dataVersion", { + scope: "world", + config: false, + type: String, + default: "fresh install" + }) + game.settings.register(settingsKey, "swapSpacebarRightClick", { name: "drag-ruler.settings.swapSpacebarRightClick.name", hint: "drag-ruler.settings.swapSpacebarRightClick.hint",