diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank/engine/Move.java')
-rw-r--r-- | core/src/ch/asynk/tankontank/engine/Move.java | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/core/src/ch/asynk/tankontank/engine/Move.java b/core/src/ch/asynk/tankontank/engine/Move.java deleted file mode 100644 index 06035c3..0000000 --- a/core/src/ch/asynk/tankontank/engine/Move.java +++ /dev/null @@ -1,158 +0,0 @@ -package ch.asynk.tankontank.engine; - -import java.util.Iterator; - -import com.badlogic.gdx.utils.Pool; -import com.badlogic.gdx.math.Vector3; - -public class Move extends Path implements Iterable<Vector3> -{ - public enum MoveType - { - REGULAR, - SET, - ENTER, - EXIT; - } - - private static final Pool<Move> movePool = new Pool<Move>() - { - @Override - protected Move newObject() { - return new Move(); - } - }; - - public static Move get(Pawn pawn, Tile from, Tile to, Orientation orientation, Path path) - { - Move m = movePool.obtain(); - m.pawn = pawn; - m.from = from; - m.to = to; - m.orientation = orientation; - if (path != null) { - m.init(path.tiles.size()); - m.cost = path.cost; - m.roadMarch = path.roadMarch; - for (Tile tile : path.tiles) - m.tiles.add(tile); - } else { - m.init(0); - } - - return m; - } - - public static void clearPool() - { - movePool.clear(); - } - - public static Move getEnter(Pawn pawn, Tile to, Orientation orientation) - { - Move m = get(pawn, null, to, orientation, null); - m.type = MoveType.ENTER; - m.cost = to.costFrom(pawn, orientation); - return m; - } - - public static Move getSet(Pawn pawn, Tile to, Orientation orientation) - { - Move m = get(pawn, null, to, orientation, null); - m.type = MoveType.SET; - m.cost = 0; - return m; - } - - public Pawn pawn; - public Tile from; - public Tile to; - public Orientation orientation; - public MoveType type; - - public Move() - { - super(); - this.pawn = null; - this.from = null; - this.to = null; - this.orientation = Orientation.KEEP; - this.type = MoveType.REGULAR; - } - - @Override - public void reset() - { - pawn = null; - from = null; - to = null; - orientation = Orientation.KEEP; - type = MoveType.REGULAR; - super.reset(); - } - - @Override - public void dispose() - { - tiles.clear(); - movePool.free(this); - } - - public boolean isSet() - { - return (type == MoveType.SET); - } - - public boolean isEnter() - { - return (type == MoveType.ENTER); - } - - public boolean isRegular() - { - return (type == MoveType.REGULAR); - } - - public boolean isFinal() - { - return (type != MoveType.ENTER); - } - - public int steps() - { - int steps = 0; - - Tile tile = from; - Orientation o = pawn.getOrientation(); - for (Tile next : tiles) { - Orientation nextO = Orientation.fromMove(tile.col, tile.row, next.col, next.row); - if (nextO != o) { - steps += 2; - o = nextO; - } else - steps += 1; - tile = next; - } - if (orientation != Orientation.fromMove(tile.col, tile.row, to.col, to.row)) - steps += 2; - else - steps +=1; - - return steps; - } - - @Override - public String toString() - { - if (from == null) - return String.format("%s %s c:%d", to.toShort(), orientation, cost); - else - return String.format("%s->%s %s c:%d", from.toShort(), to.toShort(), orientation, cost); - } - - @Override - public Iterator<Vector3> iterator() - { - return new PathIterator(pawn, from, to, orientation, tiles); - } -} |