Allow speed providers to disable Drag Ruler on a per-token basis (resolves #24)

This commit is contained in:
Manuel Vögele
2021-02-21 12:13:14 +01:00
parent 6f6655009d
commit bb5fe94439
4 changed files with 15 additions and 1 deletions
+1
View File
@@ -12,6 +12,7 @@ function register(module, type, speedProvider) {
}
else {
speedProvider.id = id
speedProvider.usesRuler = () => true
providerInstance = speedProvider
}
setupProvider(providerInstance)
+3 -1
View File
@@ -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
+10
View File
@@ -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
*