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
|
## In development
|
||||||
### New features
|
### 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.
|
- 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
|
## 1.3.4
|
||||||
### Module compatibility
|
### Module compatibility
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
"name": "Show PC speed to everyone",
|
"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."
|
"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": {
|
"speedProviderSettings": {
|
||||||
"name": "Speed Provider Settings",
|
"name": "Speed Provider Settings",
|
||||||
"hint": "The Speed Provider Settings contain all the game system specific 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
|
const originalUpdate = Ruler.prototype.update
|
||||||
Ruler.prototype.update = function (data) {
|
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) {
|
if (data.draggedToken) {
|
||||||
this.draggedToken = canvas.tokens.get(data.draggedToken)
|
this.draggedToken = canvas.tokens.get(data.draggedToken)
|
||||||
}
|
}
|
||||||
@@ -99,6 +102,12 @@ function hookRulerFunctions() {
|
|||||||
return originalMeasure.call(this, destination, options)
|
return originalMeasure.call(this, destination, options)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const originalEndMeasurement = Ruler.prototype._endMeasurement
|
||||||
|
Ruler.prototype._endMeasurement = function () {
|
||||||
|
originalEndMeasurement.call(this)
|
||||||
|
this.draggedToken = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function hookKeyboardManagerFunctions() {
|
function hookKeyboardManagerFunctions() {
|
||||||
@@ -167,15 +176,15 @@ function onTokenDragLeftDrop(event) {
|
|||||||
if (!ruler.isDragRuler)
|
if (!ruler.isDragRuler)
|
||||||
return false
|
return false
|
||||||
const selectedTokens = canvas.tokens.controlled
|
const selectedTokens = canvas.tokens.controlled
|
||||||
|
ruler._state = Ruler.STATES.MOVING
|
||||||
moveTokens.call(ruler, ruler.draggedToken, selectedTokens)
|
moveTokens.call(ruler, ruler.draggedToken, selectedTokens)
|
||||||
ruler.draggedToken = null
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
function onTokenDragLeftCancel(event) {
|
function onTokenDragLeftCancel(event) {
|
||||||
// This function is invoked by right clicking
|
// This function is invoked by right clicking
|
||||||
const ruler = canvas.controls.ruler
|
const ruler = canvas.controls.ruler
|
||||||
if (!ruler.isDragRuler)
|
if (!ruler.isDragRuler || ruler._state === Ruler.STATES.MOVING)
|
||||||
return false
|
return false
|
||||||
if (ruler._state === Ruler.STATES.MEASURING) {
|
if (ruler._state === Ruler.STATES.MEASURING) {
|
||||||
if (!game.settings.get(settingsKey, "swapSpacebarRightClick")) {
|
if (!game.settings.get(settingsKey, "swapSpacebarRightClick")) {
|
||||||
@@ -225,7 +234,6 @@ function deleteWaypoint() {
|
|||||||
else {
|
else {
|
||||||
const token = ruler.draggedToken
|
const token = ruler.draggedToken
|
||||||
ruler._endMeasurement()
|
ruler._endMeasurement()
|
||||||
ruler.draggedToken = null
|
|
||||||
|
|
||||||
// Deactivate the drag workflow in mouse
|
// Deactivate the drag workflow in mouse
|
||||||
token.mouseInteractionManager._deactivateDragEvents();
|
token.mouseInteractionManager._deactivateDragEvents();
|
||||||
|
|||||||
@@ -29,6 +29,15 @@ export function registerSettings() {
|
|||||||
default: true,
|
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
|
// This setting will be modified by the api if modules register to it
|
||||||
game.settings.register(settingsKey, "speedProvider", {
|
game.settings.register(settingsKey, "speedProvider", {
|
||||||
scope: "world",
|
scope: "world",
|
||||||
|
|||||||
Reference in New Issue
Block a user