From bb5fe944392b0928340034b8e6ebb721619cb8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Sun, 21 Feb 2021 12:13:14 +0100 Subject: [PATCH] Allow speed providers to disable Drag Ruler on a per-token basis (resolves #24) --- CHANGELOG.md | 1 + src/api.js | 1 + src/main.js | 4 +++- src/speed_provider.js | 10 ++++++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f742d0d..e7e27c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This release introduces a new API that is incompatible with the old API. The new The following things have changed with the new API: - Colors used by speed providers can now be changed by the user via configuration - Speed Providers can now offer settings to the user that will be integrated into Drag Ruler's settings menu +- Speed Providers can now conditionally disable Drag Ruler for some tokens ## 1.2.2 diff --git a/src/api.js b/src/api.js index 2e65855..bcd139d 100644 --- a/src/api.js +++ b/src/api.js @@ -12,6 +12,7 @@ function register(module, type, speedProvider) { } else { speedProvider.id = id + speedProvider.usesRuler = () => true providerInstance = speedProvider } setupProvider(providerInstance) diff --git a/src/main.js b/src/main.js index c286f8f..6919e31 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,6 @@ "use strict" -import {getRangesFromSpeedProvider, getUnreachableColorFromSpeedProvider, initApi, registerModule, registerSystem} from "./api.js" +import {currentSpeedProvider, 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" @@ -142,6 +142,8 @@ function onKeyShift(up) { } function onTokenLeftDragStart(event) { + if (!currentSpeedProvider.usesRuler(this)) + return const ruler = canvas.controls.ruler ruler.draggedToken = this let tokenCenter diff --git a/src/speed_provider.js b/src/speed_provider.js index 09ee50b..9843542 100644 --- a/src/speed_provider.js +++ b/src/speed_provider.js @@ -73,6 +73,16 @@ export class SpeedProvider { } } + /** + * Returns a boolean indicating whether this token will use a Ruler or not. + * If this is returns `false` for a token Drag Ruler will be disabled for that token. Dragging a token for which this function + * returns false will behave as if Drag Ruler wasn't installed. + * If usesRuler returns `false` it's guranteed that the `getRanges` function won't be called for that token. + */ + usesRuler(token) { + return true + } + /** * Constructs a new instance of he speed provider *