summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2020-06-03 18:04:28 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2020-06-03 18:04:28 +0200
commitf6800af5b9013589e305cccf5cdcfe91a3981a06 (patch)
treebb8445e2514156dbea686cc36d167786251f01df /core
parent0d121cac76bc84eb5238140f922f3ef1782d0910 (diff)
downloadgdx-boardgame-f6800af5b9013589e305cccf5cdcfe91a3981a06.zip
gdx-boardgame-f6800af5b9013589e305cccf5cdcfe91a3981a06.tar.gz
Tile : add distances to blockLos(…)
Diffstat (limited to 'core')
-rw-r--r--core/src/ch/asynk/gdx/boardgame/Tile.java2
-rw-r--r--core/src/ch/asynk/gdx/boardgame/boards/HexBoard.java25
2 files changed, 15 insertions, 12 deletions
diff --git a/core/src/ch/asynk/gdx/boardgame/Tile.java b/core/src/ch/asynk/gdx/boardgame/Tile.java
index 077a796..78a17e6 100644
--- a/core/src/ch/asynk/gdx/boardgame/Tile.java
+++ b/core/src/ch/asynk/gdx/boardgame/Tile.java
@@ -43,7 +43,7 @@ public class Tile implements Drawable
return onMap;
}
- public boolean blockLos(final Tile from, final Tile to)
+ public boolean blockLos(final Tile from, final Tile to, float d, float dt)
{
return false;
}
diff --git a/core/src/ch/asynk/gdx/boardgame/boards/HexBoard.java b/core/src/ch/asynk/gdx/boardgame/boards/HexBoard.java
index b560e1a..a0f1149 100644
--- a/core/src/ch/asynk/gdx/boardgame/boards/HexBoard.java
+++ b/core/src/ch/asynk/gdx/boardgame/boards/HexBoard.java
@@ -312,6 +312,7 @@ public class HexBoard implements Board
Tile from = getTile(x0, y0);
Tile to = getTile(x1, y1);
+ float d = distance(x0, y0, x1, y1);
tiles.add(from);
boolean losBlocked = false;
while ((x != x1) || (y != y1)) {
@@ -345,7 +346,7 @@ public class HexBoard implements Board
final Tile t = getTile(x, y);
tiles.add(t);
t.blocked = losBlocked;
- losBlocked = (losBlocked || t.blockLos(from, to));
+ losBlocked = (losBlocked || t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
return tiles.get(tiles.size() - 1).blocked;
@@ -353,40 +354,41 @@ public class HexBoard implements Board
private boolean verticalLineOfSight(int x0, int y0, int x1, int y1, Collection<Tile> tiles)
{
- int d = ( (y1 > y0) ? 1 : -1);
+ int dt = ( (y1 > y0) ? 1 : -1);
int x = x0;
int y = y0;
Tile from = getTile(x0, y0);
Tile to = getTile(x1, y1);
+ float d = distance(x0, y0, x1, y1);
tiles.add(from);
boolean losBlocked = false;
while ((x != x1) || (y != y1)) {
boolean blocked = losBlocked;
- y += d; // up left
+ y += dt; // up left
Tile t = getTile(x, y);
if (t.isOnMap()) {
tiles.add(t);
t.blocked = losBlocked;
- blocked = (blocked || t.blockLos(from, to));
+ blocked = (blocked || t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
- x += d; // up right
+ x += dt; // up right
t = getTile(x, y);
if (t.isOnMap()) {
tiles.add(t);
t.blocked = losBlocked;
- blocked = (blocked && t.blockLos(from, to));
+ blocked = (blocked && t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
- y += d; // vertical
+ y += dt; // vertical
t = getTile(x, y);
if (t.isOnMap()) {
tiles.add(t);
t.blocked = (losBlocked || blocked);
- losBlocked = (t.blocked || t.blockLos(from, to));
+ losBlocked = (t.blocked || t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
}
@@ -405,6 +407,7 @@ public class HexBoard implements Board
Tile from = getTile(x0, y0);
Tile to = getTile(x1, y1);
+ float d = distance(x0, y0, x1, y1);
tiles.add(from);
boolean losBlocked = false;
while ((x != x1) || (y != y1)) {
@@ -415,7 +418,7 @@ public class HexBoard implements Board
if (t.isOnMap()) {
tiles.add(t);
t.blocked = losBlocked;
- blocked = (blocked || t.blockLos(from, to));
+ blocked = (blocked || t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
y += dy; // up right
@@ -425,7 +428,7 @@ public class HexBoard implements Board
if (t.isOnMap()) {
tiles.add(t);
t.blocked = losBlocked;
- blocked = (blocked && t.blockLos(from, to));
+ blocked = (blocked && t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
x += dx; // diagonal
@@ -433,7 +436,7 @@ public class HexBoard implements Board
if (t.isOnMap()) {
tiles.add(t);
t.blocked = (losBlocked || blocked);
- losBlocked = (t.blocked || t.blockLos(from, to));
+ losBlocked = (t.blocked || t.blockLos(from, to, d, distance(x0, y0, x, y)));
}
}