From 7be8400f7e3af784fe6ecad3ea225c33e0807166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Sun, 21 Sep 2014 03:32:16 +0200 Subject: update Tile and bring TileOverlays in --- core/src/ch/asynk/tankontank/engine/Tile.java | 10 ++- .../ch/asynk/tankontank/engine/TileOverlays.java | 100 +++++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 core/src/ch/asynk/tankontank/engine/TileOverlays.java diff --git a/core/src/ch/asynk/tankontank/engine/Tile.java b/core/src/ch/asynk/tankontank/engine/Tile.java index 4e0589b..66dea74 100644 --- a/core/src/ch/asynk/tankontank/engine/Tile.java +++ b/core/src/ch/asynk/tankontank/engine/Tile.java @@ -10,11 +10,17 @@ public interface Tile extends BasicDrawable public void remove(Pawn pawn); - public Pawn getTop(); + public Pawn getTopPawn(); - public int costFrom(Side side); + public boolean mustBeDrawn(); + public boolean occupied(); + public boolean hasOverlayEnabled(); + + public void enableOverlay(int i, boolean enable); + + public List adjacents(); public enum Side { diff --git a/core/src/ch/asynk/tankontank/engine/TileOverlays.java b/core/src/ch/asynk/tankontank/engine/TileOverlays.java new file mode 100644 index 0000000..57a95d4 --- /dev/null +++ b/core/src/ch/asynk/tankontank/engine/TileOverlays.java @@ -0,0 +1,100 @@ +package ch.asynk.tankontank.engine; + +import java.util.List; +import java.util.ArrayDeque; + +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; + +import ch.asynk.tankontank.engine.gfx.StackedSpriteNode; + +public abstract class TileOverlays implements Tile +{ + private StackedSpriteNode overlays; + private ArrayDeque stack; + + public TileOverlays(TextureAtlas atlas) + { + this.stack = null; + this.overlays = new StackedSpriteNode(atlas); + } + + @Override + public int push(Pawn pawn) + { + if (stack == null) stack = new ArrayDeque(); + stack.push(pawn); + return stack.size(); + } + + @Override + public void remove(Pawn pawn) + { + stack.remove(pawn); + } + + @Override + public Pawn getTopPawn() + { + if ((stack == null) || (stack.size() == 0)) return null; + return stack.getFirst(); + } + + @Override + public boolean mustBeDrawn() + { + if (occupied()) return true; + return hasOverlayEnabled(); + } + + @Override + public boolean occupied() + { + return (stack.size() != 0); + } + + @Override + public boolean hasOverlayEnabled() + { + return overlays.isEnabled(); + } + + @Override + public void enableOverlay(int i, boolean enable) + { + overlays.enable(i, enable); + } + + @Override + public List adjacents() + { + // FIXME + System.err.println("adjacents() Not implemented yet"); + return null; + } + + @Override + public void setPosition(float x, float y, float z) + { + overlays.setPosition(x, y, z); + } + + @Override + public void draw(Batch batch, float parentAlpha) + { + overlays.draw(batch, parentAlpha); + Pawn pawn = getTopPawn(); + if (pawn != null) + pawn.draw(batch, parentAlpha); + } + + @Override + public void drawDebug(ShapeRenderer debugShapes) + { + overlays.drawDebug(debugShapes); + Pawn pawn = getTopPawn(); + if (pawn != null) + pawn.drawDebug(debugShapes); + } +} -- cgit v1.1-2-g2b99