summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2018-10-09 11:48:12 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2018-10-09 11:48:12 +0200
commita07149c93c1c1b5037c49cf6a6b6ec7c3aa02252 (patch)
tree1f0fc393d2515b7296bef3bf9499e1c62bf6d342 /core
parent30b53f449678212b799d198672d570644b32b7c0 (diff)
downloadgdx-boardgame-a07149c93c1c1b5037c49cf6a6b6ec7c3aa02252.zip
gdx-boardgame-a07149c93c1c1b5037c49cf6a6b6ec7c3aa02252.tar.gz
add pieces/Piece and Overlays
Diffstat (limited to 'core')
-rw-r--r--core/src/ch/asynk/gdx/boardgame/pieces/Overlays.java108
-rw-r--r--core/src/ch/asynk/gdx/boardgame/pieces/Piece.java22
2 files changed, 130 insertions, 0 deletions
diff --git a/core/src/ch/asynk/gdx/boardgame/pieces/Overlays.java b/core/src/ch/asynk/gdx/boardgame/pieces/Overlays.java
new file mode 100644
index 0000000..4907dde
--- /dev/null
+++ b/core/src/ch/asynk/gdx/boardgame/pieces/Overlays.java
@@ -0,0 +1,108 @@
+package ch.asynk.gdx.boardgame.pieces;
+
+import com.badlogic.gdx.graphics.g2d.Sprite;
+import com.badlogic.gdx.graphics.g2d.Batch;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
+import com.badlogic.gdx.utils.Array;
+
+import ch.asynk.gdx.boardgame.Drawable;
+import ch.asynk.gdx.boardgame.Positionable;
+import ch.asynk.gdx.boardgame.Rotable;
+import ch.asynk.gdx.boardgame.Scalable;
+
+public class Overlays implements Drawable, Positionable, Rotable, Scalable
+{
+ private boolean enabled[];
+ private Array<Sprite> sprites;
+
+ public Overlays(TextureAtlas atlas)
+ {
+ this.sprites = atlas.createSprites();
+ this.enabled = new boolean[sprites.size];
+ }
+
+ public void disableAll()
+ {
+ for (int i = 0; i < sprites.size; i++)
+ enabled[i] = false;
+ }
+
+ public void enable(int i, boolean enable)
+ {
+ enabled[i] = enable;
+ }
+
+ public boolean isEnabled(int i)
+ {
+ return enabled[i];
+ }
+
+ public boolean isEnabled()
+ {
+ for (int i = 0; i < sprites.size; i++) {
+ if (enabled[i]) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override public float getX() { return sprites.get(0).getX(); }
+ @Override public float getY() { return sprites.get(0).getY(); }
+ @Override public float getWidth() { return sprites.get(0).getWidth(); }
+ @Override public float getHeight() { return sprites.get(0).getHeight(); }
+
+ @Override public void translate(float dx, float dy)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.translate(dx, dy);
+ }
+ }
+
+ @Override public void centerOn(float cx, float cy)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.setPosition(
+ (cx - (sprite.getWidth() / 2f)),
+ (cy - (sprite.getHeight() / 2f)));
+ }
+ }
+
+ @Override public void setPosition(float x, float y)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.setPosition(x, y);
+ }
+ }
+
+ @Override public void setRotation(float rotation)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.setRotation(rotation);
+ }
+ }
+
+ @Override public void setScale(float scale)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.setScale(scale);
+ }
+ }
+
+ @Override public void setAlpha(float alpha)
+ {
+ for (Sprite sprite : sprites) {
+ sprite.setAlpha(alpha);
+ }
+ }
+
+ @Override public void draw(Batch batch)
+ {
+ for (int i = 0, n = sprites.size; i < n; i++) {
+ if (enabled[i]) {
+ sprites.get(i).draw(batch);
+ }
+ }
+ }
+}
diff --git a/core/src/ch/asynk/gdx/boardgame/pieces/Piece.java b/core/src/ch/asynk/gdx/boardgame/pieces/Piece.java
new file mode 100644
index 0000000..3c99ca4
--- /dev/null
+++ b/core/src/ch/asynk/gdx/boardgame/pieces/Piece.java
@@ -0,0 +1,22 @@
+package ch.asynk.gdx.boardgame.pieces;
+
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.Sprite;
+
+import ch.asynk.gdx.boardgame.Drawable;
+import ch.asynk.gdx.boardgame.Positionable;
+import ch.asynk.gdx.boardgame.Rotable;
+import ch.asynk.gdx.boardgame.Scalable;
+
+public class Piece extends Sprite implements Drawable, Positionable, Rotable, Scalable
+{
+ public Piece(Texture texture)
+ {
+ super(texture);
+ }
+
+ @Override public void centerOn(float cx, float cy)
+ {
+ setPosition((cx - (getWidth() / 2f)), (cy - (getHeight() / 2f)));
+ }
+}