diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-16 23:26:32 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-16 23:26:32 +0200 | 
| commit | 92c1c362c58f9c86bb0cd203c21422a55766cd0a (patch) | |
| tree | ef02661f7a2120b85132c683f4d5766da7cd443e /core/src | |
| parent | e3285ab8a207734cf12db9dc85fcc3eabaa592fd (diff) | |
| download | RustAndDust-92c1c362c58f9c86bb0cd203c21422a55766cd0a.zip RustAndDust-92c1c362c58f9c86bb0cd203c21422a55766cd0a.tar.gz | |
build board in HexMapFactory, use MapHex
Diffstat (limited to 'core/src')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Hex.java | 6 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/HexMapFactory.java | 15 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/HexMapImage.java | 52 | 
3 files changed, 38 insertions, 35 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/Hex.java b/core/src/ch/asynk/tankontank/game/Hex.java index 2c653e6..b659b45 100644 --- a/core/src/ch/asynk/tankontank/game/Hex.java +++ b/core/src/ch/asynk/tankontank/game/Hex.java @@ -2,6 +2,12 @@ package ch.asynk.tankontank.game;  public interface Hex  { +    public int push(Pawn pawn); + +    public void remove(Pawn pawn); + +    public Pawn getTop(); +      public enum Orientation      {          KEEP(0), diff --git a/core/src/ch/asynk/tankontank/game/HexMapFactory.java b/core/src/ch/asynk/tankontank/game/HexMapFactory.java index a5169e3..ee2aa25 100644 --- a/core/src/ch/asynk/tankontank/game/HexMapFactory.java +++ b/core/src/ch/asynk/tankontank/game/HexMapFactory.java @@ -30,13 +30,24 @@ public class HexMapFactory      public static HexMap getMap(AssetManager manager, MapType t)      { +        HexMap.Config cfg = config(); + +        Hex[][] board = new Hex[cfg.rows][]; +        for (int i = 0; i < cfg.rows; i++) { +            int c = cfg.cols; +            if ((i % 2) == 1) c -= 1; +            board[i] = new Hex[c]; +            for ( int j = 0; j < c; j ++) +                board[i][j] = new MapHex(MapHex.Terrain.CLEAR); +        } +          HexMap m = null;          switch(t) {              case MAP_A: -                m = new HexMapImage(config(), manager.get("images/map_a.png", Texture.class)); +                m = new HexMapImage(config(), board, manager.get("images/map_a.png", Texture.class));                  break;              case MAP_B: -                m = new HexMapImage(config(), manager.get("images/map_b.png", Texture.class)); +                m = new HexMapImage(config(), board, manager.get("images/map_b.png", Texture.class));                  break;          } diff --git a/core/src/ch/asynk/tankontank/game/HexMapImage.java b/core/src/ch/asynk/tankontank/game/HexMapImage.java index b391f8b..59e35c3 100644 --- a/core/src/ch/asynk/tankontank/game/HexMapImage.java +++ b/core/src/ch/asynk/tankontank/game/HexMapImage.java @@ -1,7 +1,5 @@  package ch.asynk.tankontank.game; -import java.util.ArrayDeque; -  import com.badlogic.gdx.Gdx;  import com.badlogic.gdx.graphics.Texture; @@ -16,18 +14,14 @@ public class HexMapImage extends Image implements HexMap      private HexMap.Config cfg;      private int cols;      private int rows; -    private ArrayDeque<Pawn>[][] cells; +    private Hex[][] board;      @SuppressWarnings("unchecked") -    public HexMapImage(HexMap.Config cfg, Texture texture) +    public HexMapImage(HexMap.Config cfg, Hex[][] board, Texture texture)      {          super(texture); -        cells = new ArrayDeque[cfg.rows][]; -        for (int i = 0; i < cfg.rows; i++) { -            if ((i % 2) == 1) cells[i] = new ArrayDeque[cfg.cols - 1]; -            else cells[i] = new ArrayDeque[cfg.cols]; -        }          this.cfg = cfg; +        this.board = board;          this.cols = cfg.cols - 1;          this.rows = cfg.rows - 1;      } @@ -39,10 +33,20 @@ public class HexMapImage extends Image implements HexMap      private Pawn getTopPawnAt(int col, int row)      { -        if ((col < 0) || (row < 0)) return null; -        ArrayDeque<Pawn> st = cells[row][col]; -        if ((st == null) || (st.size() == 0)) return null; -        return st.getFirst(); +        // if ((col < 0) || (row < 0)) throw new (); +        return board[row][col].getTop(); +    } + +    private int pushPawnAt(Pawn pawn, int col, int row) +    { +        // if ((col < 0) || (row < 0)) throw new (); +        return board[row][col].push(pawn); +    } + +    private void removePawnFrom(Pawn pawn, int col, int row) +    { +        // if ((col < 0) || (row < 0)) throw new (); +        board[row][col].remove(pawn);      }      public Vector2 getHexCenterAt(GridPoint2 cell) @@ -66,25 +70,6 @@ public class HexMapImage extends Image implements HexMap          return new Vector2(x, y);      } -    private int pushPawnAt(Pawn pawn, int col, int row) -    { -        ArrayDeque<Pawn> st = cells[row][col]; -        if (st == null) st = cells[row][col] = new ArrayDeque<Pawn>(); -        st.push(pawn); -        return st.size(); -    } - -    private void removePawnFrom(Pawn pawn, int col, int row) -    { -        if ((col> 0) && (row > 0)) { -            ArrayDeque<Pawn> st = cells[row][col]; -            if ((st == null) || (st.size() == 0)) -                Gdx.app.error("GameScreen", "remove pawn from " + col + ";" + row + " but pawn stack is empty"); -            else -                st.remove(pawn); -        } -    } -      public void movePawnTo(Pawn pawn, Vector3 coords)      {          GridPoint2 p = getHexAt(null, coords.x, coords.y); @@ -101,7 +86,8 @@ public class HexMapImage extends Image implements HexMap      public void movePawnTo(final Pawn pawn, final int col, final int row, Hex.Orientation o)      {          GridPoint2 prev = getHexAt(pawn.getLastPosition()); -        if (prev != null) removePawnFrom(pawn, prev.x, prev.y); +        // if (prev == null) throw new (); +        removePawnFrom(pawn, prev.x, prev.y);          if ((col < 0) || (row < 0)) {              pawn.resetMoves(new Runnable() { | 
