diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank/game/Hex.java')
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Hex.java | 75 |
1 files changed, 60 insertions, 15 deletions
diff --git a/core/src/ch/asynk/tankontank/game/Hex.java b/core/src/ch/asynk/tankontank/game/Hex.java index b659b45..e3889f9 100644 --- a/core/src/ch/asynk/tankontank/game/Hex.java +++ b/core/src/ch/asynk/tankontank/game/Hex.java @@ -1,24 +1,69 @@ package ch.asynk.tankontank.game; -public interface Hex +import java.util.ArrayDeque; + +public class Hex implements Tile { - public int push(Pawn pawn); + public enum Terrain + { + CLEAR, + HILLS, + WOODS, + TOWN + } + + public Terrain terrain; + public int roads; + private ArrayDeque<Pawn> stack; + + public Hex(Terrain t) + { + this.terrain = t; + this.roads = 0; + this.stack = null; + } - public void remove(Pawn pawn); + public Hex(Terrain t, int roads) + { + this.terrain = t; + this.roads = roads; + this.stack = null; + } - public Pawn getTop(); + public int costFrom(Side side) + { + if (side.v == (roads & side.v)) return 1; + + int c = 0; + switch(terrain) { + case CLEAR: + case HILLS: + c = 1; + break; + case WOODS: + case TOWN: + c = 2; + break; + } + + return c; + } + + public int push(Pawn pawn) + { + if (stack == null) stack = new ArrayDeque<Pawn>(); + stack.push(pawn); + return stack.size(); + } + + public void remove(Pawn pawn) + { + stack.remove(pawn); + } - public enum Orientation + public Pawn getTop() { - KEEP(0), - WEST(-90), - NORTH_WEST(-30), - NORTH_EAST (30), - EAST(90), - SOUTH_EAST(150), - SOUTH_WEST(-150); - - public final int v; - Orientation(int v) { this.v = v; } + if ((stack == null) || (stack.size() == 0)) return null; + return stack.getFirst(); } } |