From 2b90d55a4856969785714a689f745554496ea4c6 Mon Sep 17 00:00:00 2001 From: Chris Ryan Date: Fri, 15 Aug 2025 23:19:29 +1000 Subject: [PATCH] Look for rangeMeasurementSettingsOverride on the scene to switch off DH global range measurement settings. --- module/canvas/placeables/measuredTemplate.mjs | 24 ++++++++++++------- module/canvas/placeables/ruler.mjs | 6 ++--- module/canvas/placeables/tokenRuler.mjs | 6 ++--- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/module/canvas/placeables/measuredTemplate.mjs b/module/canvas/placeables/measuredTemplate.mjs index c9950650..1ac1ce23 100644 --- a/module/canvas/placeables/measuredTemplate.mjs +++ b/module/canvas/placeables/measuredTemplate.mjs @@ -10,29 +10,35 @@ export default class DhMeasuredTemplate extends foundry.canvas.placeables.Measur const splitRulerText = this.ruler.text.split(' '); if (splitRulerText.length > 0) { const rulerValue = Number(splitRulerText[0]); - const vagueLabel = this.constructor.getDistanceLabel(rulerValue, rangeMeasurementSettings); - this.ruler.text = vagueLabel; + const result = this.constructor.getRangeLabels(rulerValue, rangeMeasurementSettings); + this.ruler.text = result.distance + result.units ? (' ' + result.units) : '' ; } } } - static getDistanceLabel(distance, settings) { + static getRangeLabels(distance, settings) { + let result = { distance : '', units: null } + if (canvas.scene?.rangeMeasurementSettingsOverride === true) { + result.distance = distance; + result.units = canvas.scene?.grid?.units; + return result + } if (distance <= settings.melee) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.melee.name'); + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.melee.name'); } if (distance <= settings.veryClose) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.veryClose.name'); + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.veryClose.name'); } if (distance <= settings.close) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.close.name'); + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.close.name'); } if (distance <= settings.far) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.far.name'); + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.far.name'); } if (distance > settings.far) { - return game.i18n.localize('DAGGERHEART.CONFIG.Range.veryFar.name'); + result.distance = game.i18n.localize('DAGGERHEART.CONFIG.Range.veryFar.name'); } - return ''; + return result; } } diff --git a/module/canvas/placeables/ruler.mjs b/module/canvas/placeables/ruler.mjs index 6585a1cd..6e2f220d 100644 --- a/module/canvas/placeables/ruler.mjs +++ b/module/canvas/placeables/ruler.mjs @@ -8,9 +8,9 @@ export default class DhpRuler extends foundry.canvas.interaction.Ruler { const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { - const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); - context.cost = { total: distance, units: null }; - context.distance = { total: distance, units: null }; + const result = DhMeasuredTemplate.getRangeLabels(waypoint.measurement.distance.toNearest(0.01), range); + context.cost = { total: result.distance, units: result.units }; + context.distance = { total: result.distance, units: result.units }; } return context; diff --git a/module/canvas/placeables/tokenRuler.mjs b/module/canvas/placeables/tokenRuler.mjs index ff8fc0d5..056953f8 100644 --- a/module/canvas/placeables/tokenRuler.mjs +++ b/module/canvas/placeables/tokenRuler.mjs @@ -8,9 +8,9 @@ export default class DhpTokenRuler extends foundry.canvas.placeables.tokens.Toke const range = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.variantRules).rangeMeasurement; if (range.enabled) { - const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); - context.cost = { total: distance, units: null }; - context.distance = { total: distance, units: null }; + const result = DhMeasuredTemplate.getRangeLabels(waypoint.measurement.distance.toNearest(0.01), range); + context.cost = { total: result.distance, units: result.units }; + context.distance = { total: result.distance, units: result.units }; } return context;