From 34d611a9a342a8f311ed51fab1c9eb8cc84abcaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Mon, 28 Dec 2015 17:57:53 +0100 Subject: Move: add TileIterator --- core/src/ch/asynk/rustanddust/engine/Move.java | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/core/src/ch/asynk/rustanddust/engine/Move.java b/core/src/ch/asynk/rustanddust/engine/Move.java index 077823f..3ff7c54 100644 --- a/core/src/ch/asynk/rustanddust/engine/Move.java +++ b/core/src/ch/asynk/rustanddust/engine/Move.java @@ -7,6 +7,52 @@ import com.badlogic.gdx.math.Vector3; public class Move extends Path implements Iterable { + public class TileIterator implements Iterator + { + private int i; + private Tile tile; + private Move move; + + public TileIterator(Move move) + { + this.i = -1; + this.tile = null; + this.move = move; + } + + @Override + public boolean hasNext() + { + if (tile == move.to) + return false; + return true; + } + + @Override + public Tile next() + { + if (tile == move.to) + throw new java.util.NoSuchElementException(); + + if (tile != null) { + i += 1; + if (i < move.tiles.size()) + tile = move.tiles.get(i); + else + tile = move.to; + } else + tile = move.from; + + return tile; + } + + @Override + public void remove() + { + throw new UnsupportedOperationException(); + } + } + public enum MoveType { REGULAR, @@ -141,6 +187,11 @@ public class Move extends Path implements Iterable return steps; } + public Iterator tileIterator() + { + return new TileIterator(this); + } + @Override public String toString() { -- cgit v1.1-2-g2b99