diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2020-06-08 16:58:41 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2020-06-08 16:58:41 +0200 |
commit | 8c372bd29238873fe43afd84b5089375e1fa5477 (patch) | |
tree | 8a67c31a2c427af09d9aed165dac6e987f8fd9e8 | |
parent | 9d4961aaec471622458f2cb4371e7b02e983f92f (diff) | |
download | gdx-boardgame-8c372bd29238873fe43afd84b5089375e1fa5477.zip gdx-boardgame-8c372bd29238873fe43afd84b5089375e1fa5477.tar.gz |
HexScreen : showcase possible moves
-rw-r--r-- | test/src/ch/asynk/gdx/boardgame/test/HexScreen.java | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/test/src/ch/asynk/gdx/boardgame/test/HexScreen.java b/test/src/ch/asynk/gdx/boardgame/test/HexScreen.java index 67fa80e..3c9467b 100644 --- a/test/src/ch/asynk/gdx/boardgame/test/HexScreen.java +++ b/test/src/ch/asynk/gdx/boardgame/test/HexScreen.java @@ -28,10 +28,31 @@ public class HexScreen extends AbstractScreen private class Unit extends Piece { public boolean dragging; + private final int mp; + private final boolean hardTarget; - public Unit(Texture texture) + public Unit(Texture texture, boolean hardTarget) { super(texture); + this.hardTarget = hardTarget; + if (hardTarget) { + this.mp = 3; + } else { + this.mp = 2; + } + } + + @Override public int getAvailableMP() + { + return mp; + } + + @Override public int moveCost(Tile from, Tile to, Orientation orientation) + { + if (!hardTarget) return 1; + Terrain dst = ((Hex)to).terrain; + if (dst.difficult()) return 2; + return 1; } } @@ -55,6 +76,11 @@ public class HexScreen extends AbstractScreen this.height = height; } + public boolean difficult() + { + return (this != PLAIN); + } + static public Terrain get(int k) { if (v) { @@ -121,6 +147,7 @@ public class HexScreen extends AbstractScreen private class MyBoard { + private final IterableSet<Tile> moveTiles; private final IterableSet<Tile> tilesToDraw; private final Vector2 v; private final Vector3 v3; @@ -145,9 +172,10 @@ public class HexScreen extends AbstractScreen this.v = new Vector2(); this.v3 = new Vector3(); Piece.angleCorrection = 90; - this.panzer = new Unit(assets.getTexture(assets.PANZER)); - this.engineer = new Unit(assets.getTexture(assets.ENGINEER)); + this.panzer = new Unit(assets.getTexture(assets.PANZER), true); + this.engineer = new Unit(assets.getTexture(assets.ENGINEER), false); this.line = new Sprite(assets.getTexture(assets.LINE)); + this.moveTiles = new IterableSet<Tile>(20); this.tilesToDraw = new IterableSet<Tile>(15); Tile.defaultOverlay = assets.getAtlas(app.assets.HEX_OVERLAYS); } @@ -158,9 +186,8 @@ public class HexScreen extends AbstractScreen public void draw(SpriteBatch batch) { batch.draw(map, dx, dy, map.getWidth()/2, map.getHeight()/2, map.getWidth(), map.getHeight(), 1, 1, r, 0, 0, map.getWidth(), map.getHeight(), false, false); - for (Tile tile: tilesToDraw) { - tile.draw(batch); - } + for (Tile tile: moveTiles) tile.draw(batch); + for (Tile tile: tilesToDraw) tile.draw(batch); panzer.draw(batch); engineer.draw(batch); line.draw(batch); @@ -169,6 +196,7 @@ public class HexScreen extends AbstractScreen public void reset() { board.centerOf(0, 0, v); + moveTiles.clear(); tilesToDraw.clear(); v.set(0, 0); h0 = getHex(0, 0); @@ -224,6 +252,12 @@ public class HexScreen extends AbstractScreen else h1 = hex; updateLine(); + for (Tile tile: moveTiles) tile.enableOverlay(3, false); + board.possibleMoves(u, hex, moveTiles); + for (Tile tile: moveTiles) { + tile.enableOverlay(3, true); + tilesToDraw.remove(tile); + } } private void updateLine() |