diff --git a/lang/de.json b/lang/de.json index bc15451..fa13a3b 100644 --- a/lang/de.json +++ b/lang/de.json @@ -2,6 +2,11 @@ "drag-ruler": { "dependencies": { "ok": "OK", + "terrain-ruler": { + "title": "Wie man schwieriges Gelände mit Drag Ruler misst", + "text": "Du hast das {moduleName} Modul installiert. Drag Ruler kann schwieriges Gelände, das mit diesem Modul platziert wurde in seinen Messungen berücksichtigen. Hierzu greift Drag Ruler auf die Funktionalität von Terrain Ruler zurück. Wenn Terrain Ruler installiert und aktiviert ist wird Drag Ruler automatisch anfangen schwiriges Gelände in den Messungen zu berücksichtigen.", + "neverShowAgain": "Zeige dies nie wieder an" + }, "socketlib": { "title": "Socketlib Modul fehlt", "text": "Drag Ruler benötigt das socketlib-Modul, um korrekt zu funktionieren. Bitte aktiviere das socketlib-Modul in dieser Welt." diff --git a/lang/en.json b/lang/en.json index ee9f9c3..903b1d0 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2,6 +2,11 @@ "drag-ruler": { "dependencies": { "ok": "OK", + "terrain-ruler": { + "title": "How to measure difficult terrain with Drag Ruler", + "text": "You have the {moduleName} module enabled. Drag Ruler is able to measure difficult terrain that was placed down using that module. To make this possible Drag Ruler utilizes the Terrain Ruler module. If Terrain Ruler is installed and activated Drag Ruler will automatically start to respect difficult terrain in it's measurements.", + "neverShowAgain": "Never show this again" + }, "socketlib": { "title": "Socketlib Module Missing", "text": "Drag Ruler requires the socketlib module to work properly. Please activate the socketlib module in this world." diff --git a/src/compatibility.js b/src/compatibility.js index d803108..7fa7a36 100644 --- a/src/compatibility.js +++ b/src/compatibility.js @@ -1,5 +1,6 @@ import {getCostFromSpeedProvider} from "./api.js"; import {getColorForDistance} from "./main.js" +import {settingsKey} from "./settings.js"; import {getAreaFromPositionAndShape, highlightTokenShape} from "./util.js"; export function getHexSizeSupportTokenGridCenter(token) { @@ -50,4 +51,34 @@ export function checkDependencies() { }).render(true); } } + else if (!game.modules.get("terrain-ruler")?.active && game.user.isGM && !game.settings.get(settingsKey, "neverShowTerrainRulerHint")) { + const lastHint = game.settings.get(settingsKey, "lastTerrainRulerHintTime"); + if (Date.now() - lastHint > 604800000) { // One week + let enabledTerrainModule; + if (game.modules.get("enhanced-terrain-layer")?.active) { + enabledTerrainModule = game.modules.get("enhanced-terrain-layer").data.title; + } + else if (game.modules.get("TerrainLayer")?.active) { + enabledTerrainModule = game.modules.get("TerrainLayer").data.title; + } + new Dialog({ + title: game.i18n.localize("drag-ruler.dependencies.terrain-ruler.title"), + content: `

${game.i18n.localize("drag-ruler.dependencies.terrain-ruler.title")}

${game.i18n.format("drag-ruler.dependencies.terrain-ruler.text", {moduleName: enabledTerrainModule})}

`, + buttons: { + ok: { + icon: '', + label: game.i18n.localize("drag-ruler.dependencies.ok"), + callback: () => game.settings.set(settingsKey, "lastTerrainRulerHintTime", Date.now()), + }, + neverShowAgain: { + icon: '', + label: game.i18n.localize("drag-ruler.dependencies.terrain-ruler.neverShowAgain"), + callback: () => game.settings.set(settingsKey, "neverShowTerrainRulerHint", true), + } + }, + close: () => game.settings.set(settingsKey, "lastTerrainRulerHintTime", Date.now()) + }).render(true); + } + } } + diff --git a/src/settings.js b/src/settings.js index 4841e6a..004a180 100644 --- a/src/settings.js +++ b/src/settings.js @@ -47,6 +47,18 @@ export function registerSettings() { default: true, }); + game.settings.register(settingsKey, "lastTerrainRulerHintTime", { + config: false, + type: Number, + default: 0, + }); + + game.settings.register(settingsKey, "neverShowTerrainRulerHint", { + config: false, + type: Boolean, + default: false, + }); + // This setting will be modified by the api if modules register to it game.settings.register(settingsKey, "speedProvider", { scope: "world",