Tactical Grid Range Band
This commit is contained in:
81
system/scripts/tatical-grid-rulers.js
Normal file
81
system/scripts/tatical-grid-rulers.js
Normal file
@@ -0,0 +1,81 @@
|
||||
function getRangeband(gridSettings, distance) {
|
||||
const entries = Object.entries(gridSettings.ranges);
|
||||
for (let i = entries.length - 1; i >= 0; i--) {
|
||||
const [range, { start }] = entries[i];
|
||||
if (distance >= start) {
|
||||
return Number(range);
|
||||
}
|
||||
}
|
||||
return NaN;
|
||||
}
|
||||
|
||||
export class RulerL5r5e extends foundry.canvas.interaction.Ruler {
|
||||
|
||||
static WAYPOINT_LABEL_TEMPLATE = "systems/l5r5e/templates/" + "hud/tactical-grid-ruler.html"
|
||||
|
||||
/** @override */
|
||||
_getWaypointLabelContext(waypoint, state) {
|
||||
const context = super._getWaypointLabelContext(waypoint, state);
|
||||
if (!context)
|
||||
return;
|
||||
|
||||
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||
if(gridSettings.enabled) {
|
||||
const diagonalCost = game.canvas.grid.distance * waypoint.measurement.diagonals;
|
||||
context.distance.total = waypoint.measurement.distance.toNearest(0.1) + diagonalCost; //Diagonals count twice
|
||||
context.additional = {
|
||||
label: game.i18n.format("l5r5e.tactical_grid.range_abbriviation", {range: getRangeband(gridSettings, waypoint.measurement.distance)})
|
||||
};
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
_getSegmentStyle(waypoint) {
|
||||
const context = super._getSegmentStyle(waypoint);
|
||||
const client = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-client");
|
||||
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||
if(gridSettings.enabled) {
|
||||
const rangeband = getRangeband(gridSettings, waypoint.measurement.distance);
|
||||
context.color = client.ranges[rangeband].color;
|
||||
}
|
||||
return context;
|
||||
}
|
||||
}
|
||||
|
||||
export class TokenRulerL5r5e extends foundry.canvas.placeables.tokens.TokenRuler {
|
||||
static WAYPOINT_LABEL_TEMPLATE = "systems/l5r5e/templates/" + "hud/tactical-grid-ruler.html"
|
||||
|
||||
/** @override */
|
||||
_getWaypointLabelContext(waypoint, state) {
|
||||
const context = super._getWaypointLabelContext(waypoint, state);
|
||||
if (!context)
|
||||
return;
|
||||
|
||||
if (!this.token.actor)
|
||||
return context;
|
||||
|
||||
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||
if(gridSettings.enabled) {
|
||||
const diagonalCost = game.canvas.grid.distance * waypoint.measurement.diagonals;
|
||||
context.cost.total = waypoint.measurement.cost.toNearest(0.1) + diagonalCost; //Diagonals count twice
|
||||
context.additional = {
|
||||
label: game.i18n.format("l5r5e.tactical_grid.range_abbriviation", {range: getRangeband(gridSettings, waypoint.measurement.distance)})
|
||||
};
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
/** @override */
|
||||
_getGridHighlightStyle(waypoint, offset) {
|
||||
const context = super._getGridHighlightStyle(waypoint, offset);
|
||||
const client = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-client");
|
||||
const gridSettings = game.settings.get(CONFIG.l5r5e.namespace, "tactical-grid-settings-world");
|
||||
if(gridSettings.enabled) {
|
||||
const rangeband = getRangeband(gridSettings, waypoint.measurement.distance);
|
||||
context.color = client.ranges[rangeband].color;
|
||||
context.alpha = client.ranges[rangeband].alpha;
|
||||
}
|
||||
return context;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user