Skip to content

Commit

Permalink
Merge branch 'release/0.10.9' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
caewok committed Sep 6, 2024
2 parents 5776f75 + 049649e commit bc45ebb
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 19 deletions.
7 changes: 7 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
# 0.10.9
Additional fix for 5-10-5 using 10-5-10 (the offset distance was not fixed previously). Closes #195, #196.
If the movement cost is rounded to 0, don't display the label. Closes #196.
Update Polish translation. Closes #199. Thanks @Lioheart!
Fix for movement penalty getting inverted for grid measurement option. Closes #198.
Fix right-click to add waypoints. Closes #197, #192.

# 0.10.8
Fix for 5-10-5 using 10-5-10 and vice versa. Closes #195.
Update libGeometry to v0.3.12.
Expand Down
40 changes: 32 additions & 8 deletions languages/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@
"elevationruler.settings.speed-highlighting-no-hostiles.name": "Brak podświetlenia szybkości wrogów",
"elevationruler.settings.speed-highlighting-no-hostiles.hint": "Po włączeniu tej opcji użytkownik nie może zobaczyć szybkości wrogiego lub tajnego tokena, chyba że ma uprawnienia obserwatora lub właściciela.",

"elevationruler.settings.token-ruler-combat-history.name": "Śledzenie ruchu w walce",
"elevationruler.settings.token-ruler-combat-history.hint": "W przypadku podświetlania szybkości tokenów, podczas wyświetlania podświetlenia należy zsumować wszystkie ruchy tokenów w rundzie.",
"elevationruler.settings.token-ruler-combat-history.name": "Śledzenie historii ruchów w walce",
"elevationruler.settings.token-ruler-combat-history.hint": "Wyświetla historię na linijce, gdy token porusza się wielokrotnie w tej samej rundzie walki.",

"elevationruler.settings.combine-prior-with-total.name": "Połączenie wcześniejszego ruchu z całkowitym ruchem",
"elevationruler.settings.combine-prior-with-total.hint": "Jeśli opcja śledzenia ruchu bojowego jest włączona, połącz wcześniejszy ruch tokena w rundzie z całkowitym ruchem. W przeciwnym razie umieść wcześniejszy ruch w osobnej linii.",
Expand All @@ -74,10 +74,13 @@
"elevationruler.settings.token-speed-multiplier.hint": "W przypadku podświetlania szybkości tokena jest to mnożnik używany do przejścia od chodzenia do biegania (kreska) do maksimum. Na przykład, z mnożnikiem 2, token z prędkością chodu 25 będzie podświetlony na pomarańczowo po pierwszych 25 jednostkach odległości i na czerwono po pierwszych 50.",

"elevationruler.settings.round-to-multiple.name": "Dystans zaokrąglony do wielokrotności",
"elevationruler.settings.round-to-multiple.hint": "W przypadku pomiaru odległości bez siatki wyświetlana odległość jest zaokrąglana do najbliższej wielokrotności wprowadzonej liczby. Ustaw wartość 0, aby wyłączyć zaokrąglanie.",
"elevationruler.settings.round-to-multiple.hint": "Zaokrągla wyświetlaną odległość do najbliższej wielokrotności wprowadzonej liczby. Ustaw wartość 0, aby wyłączyć zaokrąglanie.",

"elevationruler.settings.token-terrain-multiplier.name": "Token jako współczynnik terenu",
"elevationruler.settings.token-terrain-multiplier.hint": "Mnożnik używany do obliczania prędkości ruchu podczas przechodzenia przez inne tokeny. Ustaw na 1, aby ignorować. Wartości mniejsze niż 1 traktują pola tokenów jako szybsze niż normalnie; wartości większe niż 1 karzą ruch przez pola tokenów.",
"elevationruler.settings.token-terrain-multiplier.name": "Procentowa kara za token",
"elevationruler.settings.token-terrain-multiplier.hint": "Karze ruch przez inne tokeny. Wartość 1 oznacza brak kary, wartość mniejsza niż 1 oznacza premię, a wartość większa niż 1 oznacza mnożnik kary. Na przykład, ustawienie 2 podwaja koszt ruchu przez token.",

"elevationruler.settings.token-terrain-multiplier-flat.name": "Płaska kara za token",
"elevationruler.settings.token-terrain-multiplier-flat.hint": "Jeśli opcja ta jest włączona, traktuje karę za ruch tokenem jako stałą wartość dodatkowego dystansu. Na przykład, ustawienie na 5 dodaje +5 do każdego kwadratu ruchu. Wartości ujemne zapewniają płaską premię.",

"elevationruler.settings.pathfinding_enable.name": "Użyj wyszukiwania ścieżek",
"elevationruler.settings.pathfinding_enable.hint": "Po włączeniu dodaje do elementów sterujących tokenów przełącznik wyznaczania ścieżki, który spowoduje, że linijka wyznaczy ścieżkę wokół ścian i tokenów, w zależności od ustawień. Wyłącz tę opcję, jeśli śledzenie ścieżek powoduje problemy z kompatybilnością. Wyłączenie może również spowodować niewielki wzrost wydajności.",
Expand All @@ -96,6 +99,7 @@

"elevationruler.settings.grid-terrain-algorithm.name": "Pomiar siatki terenu",
"elevationruler.settings.grid-terrain-algorithm.hint": "Jak uwzględnić kary lub premie za ruch wynikające z terenu i tokenów na siatce? Środek: zastosuj, jeśli teren/token pokrywa się ze środkiem siatki; Procent obszaru: zastosuj, jeśli teren/token pokrywa co najmniej taką część kwadratu/heksu siatki; Euklidesowy: proporcjonalnie na podstawie procentu segmentu linii w obrębie terenu/tokenu między tym kwadratem/heksem siatki a poprzednim.",

"elevationruler.settings.grid-terrain-choice-center-point": "Punkt środkowy",
"elevationruler.settings.grid-terrain-choice-percent-area": "Procent powierzchni",
"elevationruler.settings.grid-terrain-choice-euclidean": "Euklidesowy",
Expand All @@ -106,11 +110,31 @@
"elevationruler.settings.automatic-movement-type.name": "Autowykrywanie typu ruchu",
"elevationruler.settings.automatic-movement-type.hint": "Automatycznie wykrywa typ ruchu na podstawie pozycji tokena. Ustaw efekt statusu tokena na \"latanie\" lub \"kopanie\", aby go zastąpić.",

"elevationruler.settings.euclidean-grid-distance.name": "Preferuj odległość euklidesową",
"elevationruler.settings.euclidean-grid-distance.hint": "W przypadku scen siatkowych, jeśli wybrano „Dokładne (√2)” dla głównych ustawień „Przekątne siatki kwadratowej”, wymusi to pomiar odległości euklidesowej zamiast odległości w jednostkach heksów/kwadratów. W przypadku siatki heksów ma to wpływ tylko na ruch po przekątnej.",

"elevationruler.settings.scale-text.name": "Skala tekstu linijki",
"elevationruler.settings.scale-text.hint": "Po włączeniu, tekst linijki będzie skalowany w zależności od `canvas.dimensions.size`. Dalsze dostosowanie skalowania za pomocą `CONFIG.elevationruler.textScale`.",

"elevationruler.settings.force-grid-penalties.name": "Użycie siatki dla kar za ruch",
"elevationruler.settings.force-grid-penalties.hint": "Gdy opcja ta jest włączona, kary za ruch są naliczane tylko wtedy, gdy token/rysunek/region pokrywa środek heksu/kwadratu, a kary są naliczane za kwadrat lub heks na mapach z siatką. Gdy opcja ta jest wyłączona, kary za ruch są naliczane proporcjonalnie do ruchu. Na przykład, jeśli rysunek z karą ruchu x2 obejmuje 3/4 pola siatki, będzie ona stosowana do 3/4 ruchu przez to pole (tj. kara 1,5x).",

"elevationruler.settings.customized-labels.name": "Niestandardowy tekst linijki",
"elevationruler.settings.customized-labels.hint": "Dostosuj tekst linijki. Zmień style używając `CONFIG.elevationruler.labelStyles` i `CONFIG.elevationruler.labelIcons`.",

"elevationruler.controls.prefer-token-elevation.name": "Preferuj wysokość tokena",
"elevationruler.controls.pathfinding-control.name": "Użyj wyszukiwania ścieżek",

"elevationruler.drawingconfig.movementPenalty.name": "Premia/kara za ruch",
"elevationruler.drawingconfig.movementPenalty.hint": "Wartość 1 oznacza brak kary. Wartości większe niż jeden powodują karę za ruch o ten procent; wartości mniejsze niż jeden zapewniają premię do ruchu. Na przykład, ustawienie wartości 2 podwaja ruch przez ten obszar. Ruch poniżej narysowanej wysokości będzie ignorowany.",
"elevationruler.drawingconfig.movementPenalty.name": "Procentowa kara za ruch",
"elevationruler.drawingconfig.movementPenalty.hint": "Wartość 1 oznacza brak kary, wartość mniejsza niż 1 oznacza premię, a wartość większa niż 1 oznacza mnożnik kary. Na przykład, ustawienie 2 podwaja koszt ruchu przez ten obszar. Ruch pod narysowaną wysokością będzie ignorowany.",

"elevationruler.drawingconfig.flatMovementPenalty.name": "Użycie kary płaskiej",
"elevationruler.drawingconfig.flatMovementPenalty.hint": "Jeśli opcja ta jest włączona, traktuje karę jako stałą wartość dodatkowego dystansu. Na przykład, ustawienie na 5 dodaje +5 do każdego kwadratu ruchu. Wartości ujemne zapewniają płaską premię.",

"elevationruler.clearMovement": "Wyczyść ruch bojowy"
"elevationruler.clearMovement": "Wyczyść ruch bojowy",
"elevationruler.waypoint": "punkt trasy",
"elevationruler.up": "w górę",
"elevationruler.down": "w dół",
"elevationruler.added": "dodany",
"elevationruler.prior": "wcześniejszy"
}
4 changes: 2 additions & 2 deletions scripts/Token.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ function _onDragLeftCancel(wrapped, event) {
if ( event.button === 2 && ruler._isTokenRuler && ruler.active && ruler.state === Ruler.STATES.MEASURING ) {
log("Token#_onDragLeftMove|Token ruler active");
event.preventDefault();
if ( event.ctrlKey ) ruler._removeWaypoint(event.interactionData.origin, {snap: !event.shiftKey});
else ruler._addWaypoint(event.interactionData.origin, {snap: !event.shiftKey});
if ( event.ctrlKey ) ruler._removeWaypoint(event.interactionData.destination, {snap: !event.shiftKey});
else ruler._addWaypoint(event.interactionData.destination, {snap: !event.shiftKey});
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/geometry
14 changes: 8 additions & 6 deletions scripts/measurement/Grid.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,12 @@ function directPath3dSquare(start, end) {
* - @returns {number}
*/
function singleOffsetSquareDistanceFn(numDiagonals = 0) {
const diagonals = canvas.grid.diagonals ?? game.settings.get("core", "gridDiagonals");
const D = CONST.GRID_DIAGONALS;
let nDiag = numDiagonals;
let fn;
if ( canvas.grid.diagonals === D.ALTERNATING_1 || canvas.grid.diagonals === D.ALTERNATING_2 ) {
const kFn = canvas.grid.diagonals === D.ALTERNATING_1
if ( diagonals === D.ALTERNATING_1 || diagonals === D.ALTERNATING_2 ) {
const kFn = diagonals === D.ALTERNATING_2
? () => nDiag & 1 ? 2 : 1
: () => nDiag & 1 ? 1 : 2;
fn = (prevOffset, currOffset) => {
Expand All @@ -116,7 +117,7 @@ function singleOffsetSquareDistanceFn(numDiagonals = 0) {
} else {
let k = 1;
let k2 = 1;
switch ( canvas.grid.diagonals ) {
switch ( diagonals ) {
case D.EQUIDISTANT: k = 1; k2 = 1; break;
case D.EXACT: k = Math.SQRT2; k2 = Math.SQRT3; break;
case D.APPROXIMATE: k = 1.5; k2 = 1.75; break;
Expand Down Expand Up @@ -176,11 +177,12 @@ function directPath3dHex(start, end) {
* - @returns {number}
*/
function singleOffsetHexDistanceFn(numDiagonals = 0) {
const diagonals = canvas.grid.diagonals ?? game.settings.get("core", "gridDiagonals");
const D = CONST.GRID_DIAGONALS;
let nDiag = numDiagonals;
let fn;
if ( canvas.grid.diagonals === D.ALTERNATING_1 || canvas.grid.diagonals === D.ALTERNATING_2 ) {
const kFn = canvas.grid.diagonals === D.ALTERNATING_1
if ( diagonals === D.ALTERNATING_1 || diagonals === D.ALTERNATING_2 ) {
const kFn = diagonals === D.ALTERNATING_2
? () => nDiag & 1 ? 2 : 1
: () => nDiag & 1 ? 1 : 2;
fn = (prevOffset, currOffset) => {
Expand All @@ -195,7 +197,7 @@ function singleOffsetHexDistanceFn(numDiagonals = 0) {
};
} else {
let k = 1;
switch ( canvas.grid.diagonals ) {
switch ( diagonals ) {
case D.EQUIDISTANT: k = 1; break;
case D.EXACT: k = Math.SQRT2; break;
case D.APPROXIMATE: k = 1.5; break;
Expand Down
5 changes: 3 additions & 2 deletions scripts/measurement/MovePenalty.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,9 @@ export class MovePenalty {
const startingSpeed = this.speedFn(tClone) || 1;
regions.forEach(r => this.#addTerrainsToToken(tClone, r));

const speedInGrid = ((this.speedFn(tClone) || 1) * currentMultiplier);
const gridMult = startingSpeed / speedInGrid;
currentMultiplier ||= 1; // Don't let it divide by 0.
const speedInGrid = ((this.speedFn(tClone) || 1) / currentMultiplier);
const gridMult = startingSpeed / speedInGrid; // If currentMultiplier > 1, gridMult should be > 1.
return (flatPenalty + (gridMult * costFreeDistance));

/* Example
Expand Down
1 change: 1 addition & 0 deletions scripts/segment_labels_highlighting.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ export function segmentTerrainLabel(s) {
if ( s.waypoint.cost.almostEqual(s.waypoint.offsetDistance) ) return "";
const units = (canvas.scene.grid.units) ? ` ${canvas.scene.grid.units}` : "";
const addedCost = roundMultiple(s.waypoint.cost - s.waypoint.offsetDistance);
if ( addedCost.almostEqual(0) ) return "";
const symbol = addedCost > 0 ? "+" : "-";

if ( CONFIG[MODULE_ID].SPEED.useFontAwesome ) {
Expand Down

0 comments on commit bc45ebb

Please sign in to comment.