Check if all required dependencies are present and show an error if this is not the case

This commit is contained in:
Manuel Vögele
2021-04-14 16:37:46 +02:00
parent ff5d46ebbe
commit b734257515
4 changed files with 33 additions and 1 deletions
+7
View File
@@ -1,5 +1,12 @@
{ {
"drag-ruler": { "drag-ruler": {
"dependencies": {
"ok": "OK",
"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."
}
},
"genericSpeedProvider": { "genericSpeedProvider": {
"settings": { "settings": {
"dashMultiplier": { "dashMultiplier": {
+7
View File
@@ -1,5 +1,12 @@
{ {
"drag-ruler": { "drag-ruler": {
"dependencies": {
"ok": "OK",
"socketlib": {
"title": "Socketlib Module Missing",
"text": "Drag Ruler requires the socketlib module to work properly. Please activate the socketlib module in this world."
}
},
"genericSpeedProvider": { "genericSpeedProvider": {
"settings": { "settings": {
"dashMultiplier": { "dashMultiplier": {
+17
View File
@@ -34,3 +34,20 @@ export function measureDistances(segments, token, shape, gridSpaces=true, option
} }
} }
export function checkDependencies() {
if (!game.modules.get("socketlib")?.active) {
console.error("Drag Ruler | The `socketlib` module isn't enabled, but it's required for Drag Ruler to operate properly.");
if (game.user.isGM) {
new Dialog({
title: game.i18n.localize("drag-ruler.dependencies.socketlib.title"),
content: `<h2>${game.i18n.localize("drag-ruler.dependencies.socketlib.title")}</h2><p>${game.i18n.localize("drag-ruler.dependencies.socketlib.text")}</p>`,
buttons: {
ok: {
icon: '<i class="fas fa-check"></i>',
label: game.i18n.localize("drag-ruler.dependencies.ok")
}
},
}).render(true);
}
}
}
+2 -1
View File
@@ -1,7 +1,7 @@
"use strict" "use strict"
import {currentSpeedProvider, getMovedDistanceFromToken, getRangesFromSpeedProvider, getUnreachableColorFromSpeedProvider, initApi, registerModule, registerSystem} from "./api.js" import {currentSpeedProvider, getMovedDistanceFromToken, getRangesFromSpeedProvider, getUnreachableColorFromSpeedProvider, initApi, registerModule, registerSystem} from "./api.js"
import {getHexSizeSupportTokenGridCenter} from "./compatibility.js" import {checkDependencies, getHexSizeSupportTokenGridCenter} from "./compatibility.js";
import {moveTokens, onMouseMove} from "./foundry_imports.js" import {moveTokens, onMouseMove} from "./foundry_imports.js"
import {performMigrations} from "./migration.js" import {performMigrations} from "./migration.js"
import {DragRulerRuler} from "./ruler.js"; import {DragRulerRuler} from "./ruler.js";
@@ -27,6 +27,7 @@ Hooks.once("init", () => {
Hooks.once("ready", () => { Hooks.once("ready", () => {
performMigrations() performMigrations()
checkDependencies();
Hooks.callAll("dragRuler.ready", SpeedProvider) Hooks.callAll("dragRuler.ready", SpeedProvider)
}) })