Add a setting that allows hiding the GM's drag ruler from non gm players (resolves #23)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
## In development
|
||||
### New features
|
||||
- If the [Terrain Ruler module](https://foundryvtt.com/packages/terrain-ruler/) is installed and activated, Drag Ruler will now take difficult terrain that was placed with the [TerrainLayer module](https://foundryvtt.com/packages/TerrainLayer/) into account.
|
||||
- The GM's Drag Ruler can now be hidden from non GM players via a setting.
|
||||
|
||||
## 1.3.4
|
||||
### Module compatibility
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
"name": "Show PC speed to everyone",
|
||||
"hint": "If enabled the coloring based on actor speed for player characters will shown to everyone, even if they don't have observer permission for the character sheet."
|
||||
},
|
||||
"showGMRulerToPlayers": {
|
||||
"name": "Show GM ruler to players",
|
||||
"hint": "If disabled the ruler of GMs will not be shown for non-GM players"
|
||||
},
|
||||
"speedProviderSettings": {
|
||||
"name": "Speed Provider Settings",
|
||||
"hint": "The Speed Provider Settings contain all the game system specific settings.",
|
||||
|
||||
+11
-3
@@ -84,6 +84,9 @@ function hookRulerFunctions() {
|
||||
|
||||
const originalUpdate = Ruler.prototype.update
|
||||
Ruler.prototype.update = function (data) {
|
||||
// Don't show a GMs drag ruler to non GM players
|
||||
if (data.draggedToken && this.user.isGM && !game.user.isGM && !game.settings.get(settingsKey, "showGMRulerToPlayers"))
|
||||
return
|
||||
if (data.draggedToken) {
|
||||
this.draggedToken = canvas.tokens.get(data.draggedToken)
|
||||
}
|
||||
@@ -99,6 +102,12 @@ function hookRulerFunctions() {
|
||||
return originalMeasure.call(this, destination, options)
|
||||
}
|
||||
}
|
||||
|
||||
const originalEndMeasurement = Ruler.prototype._endMeasurement
|
||||
Ruler.prototype._endMeasurement = function () {
|
||||
originalEndMeasurement.call(this)
|
||||
this.draggedToken = null
|
||||
}
|
||||
}
|
||||
|
||||
function hookKeyboardManagerFunctions() {
|
||||
@@ -167,15 +176,15 @@ function onTokenDragLeftDrop(event) {
|
||||
if (!ruler.isDragRuler)
|
||||
return false
|
||||
const selectedTokens = canvas.tokens.controlled
|
||||
ruler._state = Ruler.STATES.MOVING
|
||||
moveTokens.call(ruler, ruler.draggedToken, selectedTokens)
|
||||
ruler.draggedToken = null
|
||||
return true
|
||||
}
|
||||
|
||||
function onTokenDragLeftCancel(event) {
|
||||
// This function is invoked by right clicking
|
||||
const ruler = canvas.controls.ruler
|
||||
if (!ruler.isDragRuler)
|
||||
if (!ruler.isDragRuler || ruler._state === Ruler.STATES.MOVING)
|
||||
return false
|
||||
if (ruler._state === Ruler.STATES.MEASURING) {
|
||||
if (!game.settings.get(settingsKey, "swapSpacebarRightClick")) {
|
||||
@@ -225,7 +234,6 @@ function deleteWaypoint() {
|
||||
else {
|
||||
const token = ruler.draggedToken
|
||||
ruler._endMeasurement()
|
||||
ruler.draggedToken = null
|
||||
|
||||
// Deactivate the drag workflow in mouse
|
||||
token.mouseInteractionManager._deactivateDragEvents();
|
||||
|
||||
@@ -29,6 +29,15 @@ export function registerSettings() {
|
||||
default: true,
|
||||
})
|
||||
|
||||
game.settings.register(settingsKey, "showGMRulerToPlayers", {
|
||||
name: "drag-ruler.settings.showGMRulerToPlayers.name",
|
||||
hint: "drag-ruler.settings.showGMRulerToPlayers.hint",
|
||||
scope: "world",
|
||||
config: true,
|
||||
type: Boolean,
|
||||
default: true,
|
||||
})
|
||||
|
||||
// This setting will be modified by the api if modules register to it
|
||||
game.settings.register(settingsKey, "speedProvider", {
|
||||
scope: "world",
|
||||
|
||||
Reference in New Issue
Block a user