diff --git a/daggerheart.mjs b/daggerheart.mjs index 6ef550ce..c4cf1c94 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -15,6 +15,7 @@ import { abilities } from './module/config/actorConfig.mjs'; import Resources from './module/applications/resources.mjs'; import DHDualityRoll from './module/data/chat-message/dualityRoll.mjs'; import { DualityRollColor } from './module/data/settings/Appearance.mjs'; +import { DhMeasuredTemplate } from './module/placeables/_module.mjs'; globalThis.SYSTEM = SYSTEM; @@ -37,6 +38,8 @@ Hooks.once('init', () => { name: game.i18n.localize(x.name) })); + CONFIG.MeasuredTemplate.objectClass = DhMeasuredTemplate; + CONFIG.Item.documentClass = documents.DhpItem; //Registering the Item DataModel diff --git a/module/placeables/_module.mjs b/module/placeables/_module.mjs new file mode 100644 index 00000000..52e3dffe --- /dev/null +++ b/module/placeables/_module.mjs @@ -0,0 +1,3 @@ +import DhMeasuredTemplate from './measuredTemplate.mjs'; + +export { DhMeasuredTemplate }; diff --git a/module/placeables/measuredTemplate.mjs b/module/placeables/measuredTemplate.mjs new file mode 100644 index 00000000..ee21af6d --- /dev/null +++ b/module/placeables/measuredTemplate.mjs @@ -0,0 +1,35 @@ +export default class DhMeasuredTemplate extends MeasuredTemplate { + _refreshRulerText() { + super._refreshRulerText(); + + const rangeMeasurementSettings = game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.RangeMeasurement); + if (rangeMeasurementSettings.enabled) { + 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; + } + } + } + + static getDistanceLabel(distance, settings) { + if (distance <= settings.melee) { + return game.i18n.localize('DAGGERHEART.Range.melee.name'); + } + if (distance <= settings.veryClose) { + return game.i18n.localize('DAGGERHEART.Range.veryClose.name'); + } + if (distance <= settings.close) { + return game.i18n.localize('DAGGERHEART.Range.close.name'); + } + if (distance <= settings.far) { + return game.i18n.localize('DAGGERHEART.Range.far.name'); + } + if (distance <= settings.veryFar) { + return game.i18n.localize('DAGGERHEART.Range.veryFar.name'); + } + + return ''; + } +} diff --git a/module/ui/ruler.mjs b/module/ui/ruler.mjs index 2041f7be..655c9c61 100644 --- a/module/ui/ruler.mjs +++ b/module/ui/ruler.mjs @@ -1,3 +1,5 @@ +import DhMeasuredTemplate from '../placeables/measuredTemplate.mjs'; + export default class DhpRuler extends foundry.canvas.interaction.Ruler { _getWaypointLabelContext(waypoint, state) { const context = super._getWaypointLabelContext(waypoint, state); @@ -6,29 +8,11 @@ export default class DhpRuler extends foundry.canvas.interaction.Ruler { const range = game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.RangeMeasurement); if (range.enabled) { - const distance = this.#getRangeLabel(waypoint.measurement.distance.toNearest(0.01), range); + const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); context.cost = { total: distance, units: null }; context.distance = { total: distance, units: null }; } return context; } - - #getRangeLabel(distance, settings) { - if (distance <= settings.melee) { - return game.i18n.localize('DAGGERHEART.Range.melee.name'); - } - if (distance <= settings.veryClose) { - return game.i18n.localize('DAGGERHEART.Range.veryClose.name'); - } - if (distance <= settings.close) { - return game.i18n.localize('DAGGERHEART.Range.close.name'); - } - if (distance <= settings.far) { - return game.i18n.localize('DAGGERHEART.Range.far.name'); - } - if (distance <= settings.veryFar) { - return game.i18n.localize('DAGGERHEART.Range.veryFar.name'); - } - } } diff --git a/module/ui/tokenRuler.mjs b/module/ui/tokenRuler.mjs index aed8859c..5c5a275e 100644 --- a/module/ui/tokenRuler.mjs +++ b/module/ui/tokenRuler.mjs @@ -1,3 +1,5 @@ +import DhMeasuredTemplate from '../placeables/measuredTemplate.mjs'; + export default class DhpTokenRuler extends foundry.canvas.placeables.tokens.TokenRuler { _getWaypointLabelContext(waypoint, state) { const context = super._getWaypointLabelContext(waypoint, state); @@ -6,29 +8,11 @@ export default class DhpTokenRuler extends foundry.canvas.placeables.tokens.Toke const range = game.settings.get(SYSTEM.id, SYSTEM.SETTINGS.gameSettings.RangeMeasurement); if (range.enabled) { - const distance = this.#getRangeLabel(waypoint.measurement.distance.toNearest(0.01), range); + const distance = DhMeasuredTemplate.getDistanceLabel(waypoint.measurement.distance.toNearest(0.01), range); context.cost = { total: distance, units: null }; context.distance = { total: distance, units: null }; } return context; } - - #getRangeLabel(distance, settings) { - if (distance <= settings.melee) { - return game.i18n.localize('DAGGERHEART.Range.melee.name'); - } - if (distance <= settings.veryClose) { - return game.i18n.localize('DAGGERHEART.Range.veryClose.name'); - } - if (distance <= settings.close) { - return game.i18n.localize('DAGGERHEART.Range.close.name'); - } - if (distance <= settings.far) { - return game.i18n.localize('DAGGERHEART.Range.far.name'); - } - if (distance <= settings.veryFar) { - return game.i18n.localize('DAGGERHEART.Range.veryFar.name'); - } - } }