diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2015-12-28 17:57:53 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2015-12-28 17:57:53 +0100 |
commit | 34d611a9a342a8f311ed51fab1c9eb8cc84abcaa (patch) | |
tree | 8c267572451973b0114f9691ce94d40c63ecec10 /core/src/ch | |
parent | aecdc3c1d331c774650ed17013c8143a73717aaf (diff) | |
download | RustAndDust-34d611a9a342a8f311ed51fab1c9eb8cc84abcaa.zip RustAndDust-34d611a9a342a8f311ed51fab1c9eb8cc84abcaa.tar.gz |
Move: add TileIterator
Diffstat (limited to 'core/src/ch')
-rw-r--r-- | core/src/ch/asynk/rustanddust/engine/Move.java | 51 |
1 files changed, 51 insertions, 0 deletions
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<Vector3> { + public class TileIterator implements Iterator<Tile> + { + 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<Vector3> return steps; } + public Iterator<Tile> tileIterator() + { + return new TileIterator(this); + } + @Override public String toString() { |