Skip to content

Commit

Permalink
Merge branch 'release/0.10.7' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
caewok committed Sep 2, 2024
2 parents 903c33e + ec832d1 commit ed4c8e0
Show file tree
Hide file tree
Showing 13 changed files with 98 additions and 162 deletions.
8 changes: 8 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# 0.10.7
Switch to using Bresenham 3d algorithm to determine 3d grid path for square grids. Use Bresenham 4d algorithm to determine 3d grid path for hex grids (hex-cube dimensions + elevation dimension). Closes #194.
For pathfinding, don't consider walls blocking if the wall top elevation equals the token elevation (but still blocks if wall bottom elevation equals token elevation).
If Wall Height module is active and vaulting is enabled, ignore walls within the vaulting height.
Update Italian localization. Thanks @GregoryWarn!
Update Brazilian Portugese translation. Thanks @Kharmans!
Update libGeometry to v0.3.11.

# 0.10.6
## New Features
Setting to apply movement penalties per-grid-space. Defaults to enabled. For gridded scenes, this will (1) count regions/tokens/drawings as imposing movement penalty only if the region/token/drawing overlaps the center point of the grid space and (2) impose the penalty at a grid-space level. If disabled, this will proportionally apply the penalty based on the precise movement path. Closes #181.
Expand Down
18 changes: 14 additions & 4 deletions languages/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,12 @@
"elevationruler.settings.round-to-multiple.name": "Arrotonda Distanza ad un multiplo",
"elevationruler.settings.round-to-multiple.hint": "Per la misurazione della distanza senza griglia, arrotondare la distanza visualizzata al multiplo più vicino del numero immesso. Impostare su 0 per disabilitare l'arrotondamento.",

"elevationruler.settings.token-terrain-multiplier.name": "Token come moltiplicatore terreno",
"elevationruler.settings.token-terrain-multiplier.hint": "Moltiplicatore da utilizzare per calcolare la velocità di movimento quando ci si sposta attraverso altri token. Impostato su 1 per ignorare. I valori inferiori a 1 trattano gli spazi dei segnalini come più veloci del normale; valori maggiori di 1 penalizzano il movimento attraverso gli spazi dei token.",
"elevationruler.settings.token-terrain-multiplier.name": "Percentuale Penalità Token",
"elevationruler.settings.token-terrain-multiplier.hint": "Penalizza il movimento attraverso altri token. Impostato a 1 per nessuna penalità, inferiore a 1 per garantire un bonus, maggiore di 1 per imporre un moltiplicatore di penalità. Ad esempio, imposta su 2 per raddoppiare il costo di movimento attraverso un token.",

"elevationruler.settings.token-terrain-multiplier-flat.name": "Penalità Token Fissa",
"elevationruler.settings.token-terrain-multiplier-flat.hint": "Se abilitato, considera la penalità di movimento del token come una quantità fissa di distanza aggiuntiva. Ad esempio, imposta su 5 per aggiungere +5 a ciascun quadrato di movimento. I valori negativi forniscono un bonus fisso.",

"elevationruler.settings.pathfinding_enable.name": "Usa Trova Percorso",
"elevationruler.settings.pathfinding_enable.hint": "Quando abilitato, aggiunge un tasto Trova percorso al controllo Token che farà sì che il righello mappi un percorso attorno a muri e token a seconda delle impostazioni. Disabilita se Trova Percorso causa problemi di compatibilità. La disabilitazione può anche comportare un piccolo aumento delle prestazioni.",

Expand All @@ -96,6 +99,7 @@

"elevationruler.settings.grid-terrain-algorithm.name": "Misurazione Griglia Terreno",
"elevationruler.settings.grid-terrain-algorithm.hint": "Quando sei su una griglia, come tenere conto delle penalità di movimento o dei bonus derivanti dal terreno e dai token? Centro: si applica se il terreno/token si sovrappone al centro della griglia; Area percentuale: si applica se il terreno/token copre almeno questa parte del quadrato/esagono della griglia; Euclideo: ripartizione proporzionale in base alla percentuale del segmento di linea all'interno del terreno/token tra questo quadrato/esagono della griglia e il precedente.",

"elevationruler.settings.grid-terrain-choice-center-point": "Centro",
"elevationruler.settings.grid-terrain-choice-percent-area": "Area Percentuale",
"elevationruler.settings.grid-terrain-choice-euclidean": "Euclideo",
Expand All @@ -112,15 +116,21 @@
"elevationruler.settings.scale-text.name": "Testo Scala Righello",
"elevationruler.settings.scale-text.hint": "Se abilitato, il testo del righello verrà ridimensionato in base a 'canvas.dimensions.size'. Regola ulteriormente il ridimensionamento utilizzando `CONFIG.elevationruler.textScale`.",

"elevationruler.settings.force-grid-penalties.name": "Usa Griglia per Penalità Movimento",
"elevationruler.settings.force-grid-penalties.hint": "Se abilitate, le penalità di movimento si applicano solo se il token/disegno/regione copre il centro dell'esagono/quadrato e le penalità vengono applicate per quadrato o per esagono sulle mappe a griglia. Quando disabilitato, le penalità al movimento vengono applicate proporzionalmente al movimento. Ad esempio, se un disegno con una penalità di movimento x2 copre 3/4 di un quadrato della griglia, si applicherà a 3/4 del movimento attraverso quel quadrato (ovvero penalità 1,5x).",

"elevationruler.settings.customized-labels.name": "Testo Righello Personalizzato",
"elevationruler.settings.customized-labels.hint": "Personalizza il testo del righello. Modifica gli stili utilizzando `CONFIG.elevationruler.labelStyles` e `CONFIG.elevationruler.labelIcons`.",

"elevationruler.controls.prefer-token-elevation.name": "Preferisci elevazione token",
"elevationruler.controls.pathfinding-control.name": "Trova Percorso",

"elevationruler.drawingconfig.movementPenalty.name": "Bonus/Penalità Movimento",
"elevationruler.drawingconfig.movementPenalty.name": "Percentuale Penalità Movimento",
"elevationruler.drawingconfig.movementPenalty.hint": "Impostato a 1 senza penalità. Valori maggiori di uno penalizzano il movimento di quella percentuale; valori inferiori a uno garantiscono effettivamente un bonus al movimento. Ad esempio, impostalo su 2 per raddoppiare il movimento in quest'area. Il movimento sotto l'elevazione del disegno verrà ignorato.",


"elevationruler.drawingconfig.flatMovementPenalty.name": "Usa Penalità Fissa",
"elevationruler.drawingconfig.flatMovementPenalty.hint": "Se abilitato, considera la penalità come un importo fisso di distanza aggiuntiva. Ad esempio, imposta su 5 per aggiungere +5 a ciascun quadrato di movimento. I valori negativi forniscono un bonus fisso.",

"elevationruler.clearMovement": "Cancella Movimento Combattente",
"elevationruler.waypoint": "Punto di passaggio",
"elevationruler.up": "Su",
Expand Down
12 changes: 11 additions & 1 deletion languages/pt-BR.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"elevationruler.settings.speed-highlighting-choice-combat": "Apenas em Combate",
"elevationruler.settings.speed-highlighting-choice-always": "Sempre",

"elevationruler.settings.speed-highlighting-no-hostiles.name": "Sem Destaque de Velocidade de Hostis",
"elevationruler.settings.speed-highlighting-no-hostiles.name": "Sem Destaque de Velocidade de Hostis",
"elevationruler.settings.speed-highlighting-no-hostiles.hint": "Quando ativado, o usuário não pode ver a velocidade de um token hostil ou secreto, a menos que o usuário tenha permissões de Observador ou Dono.",

"elevationruler.settings.token-ruler-combat-history.name": "Rastrear Movimento de Combate",
Expand All @@ -79,6 +79,9 @@
"elevationruler.settings.token-terrain-multiplier.name": "Token como Multiplicador de Terreno",
"elevationruler.settings.token-terrain-multiplier.hint": "Multiplicador a ser usado para calcular a velocidade de movimento ao passar por outros tokens. Defina como 1 para ignorar. Valores menores que 1 tratam os espaços ocupados por tokens como mais rápidos que o normal; valores maiores que 1 penalizam o movimento através de espaços ocupados por tokens.",

"elevationruler.settings.token-terrain-multiplier-flat.name": "Penalidade Fixa do Token",
"elevationruler.settings.token-terrain-multiplier-flat.hint": "Se ativado, trata a penalidade de movimento do token como uma quantidade fixa de distância adicional. Por exemplo, defina 5 para adicionar +5 a cada quadrado de movimento. Valores negativos fornecem um bônus fixo.",

"elevationruler.settings.pathfinding_enable.name": "Usar Descoberta de Rota",
"elevationruler.settings.pathfinding_enable.hint": "Quando ativado, adiciona um botão de descoberta de rota aos controles de Token, que fará com que a régua mapeie um caminho ao redor de paredes e tokens, dependendo das configurações. Desative isto se a descoberta de rota estiver causando problemas de compatibilidade. A desativação também pode resultar em um pequeno aumento de desempenho.",

Expand All @@ -96,6 +99,7 @@

"elevationruler.settings.grid-terrain-algorithm.name": "Medição de Grade de Terreno",
"elevationruler.settings.grid-terrain-algorithm.hint": "Quando estiver em uma grade, como contabilizar penalidades de movimento ou bônus de terreno e tokens? Centro: aplica se o terreno/token se sobrepõe ao centro da grade; Percentual de Área: aplica se o terreno/token cobrir pelo menos esta parte do quadrado/hexágono da grade; Euclidiano: rateado com base na porcentagem do segmento de linha dentro do terreno/token entre esta grade quadrada/hexágono e o anterior.",

"elevationruler.settings.grid-terrain-choice-center-point": "Centro",
"elevationruler.settings.grid-terrain-choice-percent-area": "Percentual de Área",
"elevationruler.settings.grid-terrain-choice-euclidean": "Euclideano",
Expand All @@ -112,6 +116,9 @@
"elevationruler.settings.scale-text.name": "Texto da Régua de Escala",
"elevationruler.settings.scale-text.hint": "Quando ativado, o texto da régua será dimensionado dependendo do `canvas.dimensions.size`. Ajuste ainda mais a escala usando `CONFIG.elevationruler.textScale`.",

"elevationruler.settings.force-grid-penalties.name": "Usar Grade para Penalidades de Movimento",
"elevationruler.settings.force-grid-penalties.hint": "Quando ativado, as penalidades de movimento só se aplicam se o token/desenho/região cobrir o centro do hexágono/quadrado e as penalidades são aplicadas por quadrado ou por hexágono em mapas com grade. Quando desativado, as penalidades de movimento são aplicadas proporcionalmente ao movimento. Por exemplo, se um desenhor com uma penalidade de movimento x2 cobrir 3/4 de um quadrado da grade, ele será aplicado a 3/4 do movimento através desse quadrado (ou seja, penalidade de 1,5x).",

"elevationruler.settings.customized-labels.name": "Texto da Régua Personalizado",
"elevationruler.settings.customized-labels.hint": "Personalize o texto da régua. Altere os estilos usando `CONFIG.elevationruler.labelStyles` e `CONFIG.elevationruler.labelIcons`.",

Expand All @@ -121,6 +128,9 @@
"elevationruler.drawingconfig.movementPenalty.name": "Bônus/Penalidade de Movimento",
"elevationruler.drawingconfig.movementPenalty.hint": "Defina como 1 para nenhuma penalidade. Valores superiores a um penalizam o movimento nessa percentagem; valores menores que um concedem efetivamente um bônus ao movimento. Por exemplo, defina como 2 para duplicar o movimento nesta área. Movimento abaixo da elevação do desenho será ignorado.",

"elevationruler.drawingconfig.flatMovementPenalty.name": "Usar Penalidade Fixa",
"elevationruler.drawingconfig.flatMovementPenalty.hint": "Se ativado, trata a penalidade como um valor fixo de distância adicional. Por exemplo, defina 5 para adicionar +5 a cada quadrado de movimento. Valores negativos fornecem um bônus fixo.",

"elevationruler.clearMovement": "Limpar Deslocamento do Combatente",
"elevationruler.waypoint": "parada",
"elevationruler.up": "acima",
Expand Down
6 changes: 3 additions & 3 deletions scripts/Ruler.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const PATCHES = {};
PATCHES.BASIC = {};
PATCHES.SPEED_HIGHLIGHTING = {};

import { SPEED, MODULE_ID, MODULES_ACTIVE, MOVEMENT_TYPES } from "./const.js";
import { SPEED, MODULE_ID, OTHER_MODULES, MOVEMENT_TYPES } from "./const.js";
import { Settings } from "./settings.js";
import { Ray3d } from "./geometry/3d/Ray3d.js";
import {
Expand Down Expand Up @@ -344,7 +344,7 @@ function _getMeasurementSegments(wrapped) {
pathPoints = calculatePathPointsForSegment(lastSegment, token);
}

if ( MODULES_ACTIVE.TERRAIN_MAPPER ) {
if ( OTHER_MODULES.TERRAIN_MAPPER.ACTIVE ) {
const t0 = performance.now();
// For now, determine movement type for each of the path points. PathPoints are {x, y} objects.
// If no path points, use the segments.
Expand All @@ -362,7 +362,7 @@ function _getMeasurementSegments(wrapped) {

// Determine the region path.
pathPoints.length = 0;
const ElevationHandler = MODULES_ACTIVE.API.TERRAIN_MAPPER.ElevationHandler;
const ElevationHandler = OTHER_MODULES.TERRAIN_MAPPER.API.ElevationHandler;
let prevPt = initialPath[0];
pathPoints.push(prevPt);
for ( let i = 1, n = initialPath.length; i < n; i += 1 ) {
Expand Down
16 changes: 11 additions & 5 deletions scripts/const.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,24 @@ export const FLAGS = {
MOVEMENT_HISTORY: "movementHistory"
};

export const MODULES_ACTIVE = { API: {} };
// Track certain modules that complement features of this module.
export const OTHER_MODULES = {
TERRAIN_MAPPER: { KEY: "terrainmapper" },
LEVELS: { KEY: "levels" },
WALL_HEIGHT: { KEY: "wall-height", FLAGS: { VAULTING: "blockSightMovement" } }
}

// Hook init b/c game.modules is not initialized at start.
Hooks.once("init", function() {
MODULES_ACTIVE.LEVELS = game.modules.get("levels")?.active;
MODULES_ACTIVE.TERRAIN_MAPPER = game.modules.get("terrainmapper")?.active;
for ( const obj of Object.values(OTHER_MODULES) ) obj.ACTIVE = game.modules.get(obj.KEY)?.active
});

// API not necessarily available until ready hook. (Likely added at init.)
Hooks.once("ready", function() {
if ( MODULES_ACTIVE.TERRAIN_MAPPER ) MODULES_ACTIVE.API.TERRAIN_MAPPER = game.modules.get("terrainmapper").api;
});
const tm = OTHER_MODULES.TERRAIN_MAPPER;
if ( tm.ACTIVE ) tm.API = game.modules.get(tm.KEY).api;
})


export const MOVEMENT_TYPES = {
AUTO: -1,
Expand Down
2 changes: 1 addition & 1 deletion scripts/geometry
Loading

0 comments on commit ed4c8e0

Please sign in to comment.