summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/game/battles
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2014-10-18 07:31:51 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2014-10-18 07:31:51 +0200
commita594a20752ec27a0a9dea6b8e52a72263d00abc3 (patch)
tree7bbe081d56eb06dedbc04f5d7aa82cd4a036bfde /core/src/ch/asynk/tankontank/game/battles
parent548d25b10a2e049bf13b80a111df351fa7d5e6e1 (diff)
downloadRustAndDust-a594a20752ec27a0a9dea6b8e52a72263d00abc3.zip
RustAndDust-a594a20752ec27a0a9dea6b8e52a72263d00abc3.tar.gz
move Factory, MapA, MapB into game/battles
Diffstat (limited to 'core/src/ch/asynk/tankontank/game/battles')
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/Factory.java156
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/MapA.java77
-rw-r--r--core/src/ch/asynk/tankontank/game/battles/MapB.java75
3 files changed, 308 insertions, 0 deletions
diff --git a/core/src/ch/asynk/tankontank/game/battles/Factory.java b/core/src/ch/asynk/tankontank/game/battles/Factory.java
new file mode 100644
index 0000000..f753d47
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/game/battles/Factory.java
@@ -0,0 +1,156 @@
+package ch.asynk.tankontank.game.battles;
+
+import com.badlogic.gdx.utils.Disposable;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+
+import ch.asynk.tankontank.TankOnTank;
+import ch.asynk.tankontank.engine.Board;
+import ch.asynk.tankontank.game.Player;
+import ch.asynk.tankontank.game.Map;
+import ch.asynk.tankontank.game.Hex;
+import ch.asynk.tankontank.game.Army;
+import ch.asynk.tankontank.game.Unit;
+import ch.asynk.tankontank.game.Unit.UnitId;
+import ch.asynk.tankontank.game.Unit.UnitType;
+
+public class Factory implements Board.TileBuilder, Disposable
+{
+ public enum MapType
+ {
+ MAP_A,
+ MAP_B
+ }
+
+ public enum Scenarios
+ {
+ FAKE
+ }
+
+ private TextureAtlas atlas;
+ private final TankOnTank game;
+
+ public Factory(final TankOnTank game)
+ {
+ this.game = game;
+ }
+
+ public void assetsLoaded()
+ {
+ this.atlas = game.manager.get("data/assets.atlas", TextureAtlas.class);
+ }
+
+ @Override
+ public void dispose()
+ {
+ atlas.dispose();
+ }
+
+ private Board.Config config()
+ {
+ Board.Config cfg = new Board.Config();
+ cfg.cols = 10;
+ cfg.rows = 9;
+ cfg.x0 = 272;
+ cfg.y0 = 182;
+ cfg.w = 189;
+ cfg.dw = 94;
+ cfg.s = 110;
+ cfg.dh = 53.6f;
+ cfg.h = cfg.s + cfg.dh;
+ cfg.slope = (cfg.dh / (float) cfg.dw);
+
+ return cfg;
+ }
+
+ public Map getMap(MapType t)
+ {
+ Board.Config cfg = config();
+
+ Map m = null;
+ switch(t) {
+ case MAP_A:
+ m = new MapA(game, config(), "data/map_a.png");
+ break;
+ case MAP_B:
+ m = new MapB(game, config(), "data/map_b.png");
+ break;
+ }
+
+ return m;
+ }
+
+ public Player getPlayer(Army army)
+ {
+ if (army == Army.US)
+ return new Player(game, Army.US, game.skin.getFont("default-font"), atlas, "us-flag", 10);
+ else
+ return new Player(game, Army.GE, game.skin.getFont("default-font"), atlas, "ge-flag", 10);
+ }
+
+ public Unit getUnit(UnitId id)
+ {
+ Unit u = null;
+ UnitType ut = UnitType.HARD_TARGET;
+ UnitType utHq = UnitType.HARD_TARGET_HQ;
+ switch(id) {
+ case GE_AT_GUN:
+ ut = UnitType.AT_GUN;
+ u = new Unit(Army.GE, id, ut, 3, 8, 9, 1, atlas, "ge-at-gun", "head");
+ break;
+ case GE_INFANTRY:
+ ut = UnitType.INFANTRY;
+ u = new Unit(Army.GE, id, ut, 1, 7, 10, 1, atlas, "ge-infantry", "head");
+ break;
+ case GE_KINGTIGER:
+ u = new Unit(Army.GE, id, ut, 3, 12, 1, atlas, "ge-kingtiger", "head");
+ break;
+ case GE_PANZER_IV:
+ u = new Unit(Army.GE, id, ut, 2, 9, 2, atlas, "ge-panzer-iv", "head");
+ break;
+ case GE_PANZER_IV_HQ:
+ u = new Unit(Army.GE, id, utHq, 2, 9, 2, atlas, "ge-panzer-iv-hq", "head");
+ break;
+ case GE_TIGER:
+ u = new Unit(Army.GE, id, ut, 3, 11, 1, atlas, "ge-tiger", "head");
+ break;
+ case GE_WESPE:
+ ut = UnitType.ARTILLERY;
+ u = new Unit(Army.GE, id, ut, 5, 8, 1, atlas, "ge-wespe", "head");
+ break;
+ case US_AT_GUN:
+ ut = UnitType.AT_GUN;
+ u = new Unit(Army.US, id, ut, 1, 7, 10, 1, atlas, "us-at-gun", "head");
+ break;
+ case US_INFANTRY:
+ ut = UnitType.INFANTRY;
+ u = new Unit(Army.US, id, ut, 1, 7, 10, 1, atlas, "us-infantry", "head");
+ break;
+ case US_PERSHING:
+ u = new Unit(Army.US, id, ut, 3, 10, 2, atlas, "us-pershing", "head");
+ break;
+ case US_PERSHING_HQ:
+ u = new Unit(Army.US, id, utHq, 3, 10, 2, atlas, "us-pershing-hq", "head");
+ break;
+ case US_PRIEST:
+ ut = UnitType.ARTILLERY;
+ u = new Unit(Army.US, id, ut, 5, 8, 1, atlas, "us-priest", "head");
+ break;
+ case US_SHERMAN:
+ u = new Unit(Army.US, id, ut, 2, 9, 2, atlas, "us-sherman", "us-sherman-head");
+ break;
+ case US_SHERMAN_HQ:
+ u = new Unit(Army.US, id, utHq, 2, 9, 2, atlas, "us-sherman-hq", "head");
+ break;
+ case US_WOLVERINE:
+ u = new Unit(Army.US, id, ut, 3, 8, 3, atlas, "us-wolverine", "head");
+ break;
+ }
+
+ return u;
+ }
+
+ public Hex getNewTile(float cx, float cy)
+ {
+ return new Hex(cx, cy, atlas);
+ }
+}
diff --git a/core/src/ch/asynk/tankontank/game/battles/MapA.java b/core/src/ch/asynk/tankontank/game/battles/MapA.java
new file mode 100644
index 0000000..3f18e39
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/game/battles/MapA.java
@@ -0,0 +1,77 @@
+package ch.asynk.tankontank.game.battles;
+
+import ch.asynk.tankontank.TankOnTank;
+import ch.asynk.tankontank.engine.Board;
+import ch.asynk.tankontank.engine.Orientation;
+import ch.asynk.tankontank.game.Map;
+import ch.asynk.tankontank.game.Hex;
+
+public class MapA extends Map
+{
+ public MapA(final TankOnTank game, Board.Config cfg, String textureName)
+ {
+ super(game, cfg, textureName);
+ }
+
+ @Override
+ protected void setup()
+ {
+ getHex(5, 1).terrain = Hex.Terrain.HILLS;
+ getHex(7, 3).terrain = Hex.Terrain.HILLS;
+ getHex(7, 8).terrain = Hex.Terrain.HILLS;
+ getHex(8, 8).terrain = Hex.Terrain.HILLS;
+
+ getHex(5, 0).terrain = Hex.Terrain.WOODS;
+ getHex(6, 0).terrain = Hex.Terrain.WOODS;
+ getHex(3, 3).terrain = Hex.Terrain.WOODS;
+ getHex(4, 3).terrain = Hex.Terrain.WOODS;
+ getHex(10, 7).terrain = Hex.Terrain.WOODS;
+ getHex(11, 7).terrain = Hex.Terrain.WOODS;
+ getHex(11, 8).terrain = Hex.Terrain.WOODS;
+
+ getHex(6, 1).terrain = Hex.Terrain.TOWN;
+ getHex(2, 2).terrain = Hex.Terrain.TOWN;
+ getHex(6, 4).terrain = Hex.Terrain.TOWN;
+ getHex(10, 5).terrain = Hex.Terrain.TOWN;
+ getHex(7, 7).terrain = Hex.Terrain.TOWN;
+ getHex(4, 6).terrain = Hex.Terrain.TOWN;
+
+ getHex(10, 1).terrain = Hex.Terrain.OFFMAP;
+ getHex(11, 3).terrain = Hex.Terrain.OFFMAP;
+ getHex(12, 5).terrain = Hex.Terrain.OFFMAP;
+ getHex(13, 7).terrain = Hex.Terrain.OFFMAP;
+
+ int N = Orientation.NORTH.s;
+ int S = Orientation.SOUTH.s;
+ int NE = Orientation.NORTH_EAST.s;
+ int NW = Orientation.NORTH_WEST.s;
+ int SE = Orientation.SOUTH_EAST.s;
+ int SW = Orientation.SOUTH_WEST.s;
+
+ getHex(6, 1).roads = (NW | SW);
+ for (int i = 1; i < 11; i++) {
+ if (i == 6)
+ getHex(i, 2).roads = (NE | S | SW);
+ else if (i == 7)
+ getHex(i, 2).roads = (N | SE);
+ else
+ getHex(i, 2).roads = (N | S);
+ }
+ getHex(6, 3).roads = (NE | SW);
+ getHex(6, 4).roads = (N | NE | SW);
+ getHex(7, 4).roads = (N | S);
+ getHex(8, 4).roads = (NW | S);
+ getHex(6, 5).roads = (NE | SW);
+ getHex(8, 5).roads = (N | SW);
+ getHex(9, 5).roads = (N | S | NE);
+ getHex(10, 5).roads = (N | S);
+ getHex(11, 5).roads = (N | S);
+ getHex(3, 6).roads = (N | S);
+ getHex(4, 6).roads = (N | S);
+ getHex(5, 6).roads = (N | S);
+ getHex(6, 6).roads = (NE | NW | S);
+ getHex(8, 6).roads = (NE | SW);
+ getHex(7, 7).roads = (N | SE);
+ getHex(8, 7).roads = (NE | S);
+ }
+}
diff --git a/core/src/ch/asynk/tankontank/game/battles/MapB.java b/core/src/ch/asynk/tankontank/game/battles/MapB.java
new file mode 100644
index 0000000..c0f23a2
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/game/battles/MapB.java
@@ -0,0 +1,75 @@
+package ch.asynk.tankontank.game.battles;
+
+import ch.asynk.tankontank.TankOnTank;
+import ch.asynk.tankontank.engine.Board;
+import ch.asynk.tankontank.engine.Orientation;
+import ch.asynk.tankontank.game.Map;
+import ch.asynk.tankontank.game.Hex;
+
+public class MapB extends Map
+{
+ public MapB(final TankOnTank game, Board.Config cfg, String textureName)
+ {
+ super(game, cfg, textureName);
+ }
+
+ @Override
+ protected void setup()
+ {
+ getHex(4, 0).terrain = Hex.Terrain.HILLS;
+ getHex(5, 0).terrain = Hex.Terrain.HILLS;
+ getHex(1, 1).terrain = Hex.Terrain.HILLS;
+ getHex(9, 7).terrain = Hex.Terrain.HILLS;
+ getHex(10, 7).terrain = Hex.Terrain.HILLS;
+
+ getHex(3, 0).terrain = Hex.Terrain.WOODS;
+ getHex(6, 0).terrain = Hex.Terrain.WOODS;
+ getHex(8, 1).terrain = Hex.Terrain.WOODS;
+ getHex(9, 2).terrain = Hex.Terrain.WOODS;
+ getHex(4, 5).terrain = Hex.Terrain.WOODS;
+ getHex(5, 6).terrain = Hex.Terrain.WOODS;
+ getHex(6, 6).terrain = Hex.Terrain.WOODS;
+ getHex(11, 8).terrain = Hex.Terrain.WOODS;
+
+ getHex(1, 2).terrain = Hex.Terrain.TOWN;
+ getHex(5, 3).terrain = Hex.Terrain.TOWN;
+ getHex(6, 4).terrain = Hex.Terrain.TOWN;
+ getHex(7, 8).terrain = Hex.Terrain.TOWN;
+
+ getHex(10, 1).terrain = Hex.Terrain.OFFMAP;
+ getHex(11, 3).terrain = Hex.Terrain.OFFMAP;
+ getHex(12, 5).terrain = Hex.Terrain.OFFMAP;
+ getHex(13, 7).terrain = Hex.Terrain.OFFMAP;
+
+ int N = Orientation.NORTH.s;
+ int S = Orientation.SOUTH.s;
+ int NE = Orientation.NORTH_EAST.s;
+ int NW = Orientation.NORTH_WEST.s;
+ int SE = Orientation.SOUTH_EAST.s;
+ int SW = Orientation.SOUTH_WEST.s;
+
+ getHex(1, 2).roads = (S | NW);
+ getHex(2, 3).roads = (SE | N);
+ getHex(3, 3).roads = (S | N);
+ getHex(4, 3).roads = (S | N);
+ getHex(5, 3).roads = (S | NW);
+ getHex(6, 4).roads = (SE | N);
+ getHex(7, 4).roads = (S | N);
+ getHex(8, 4).roads = (S | SW | N);
+ getHex(9, 4).roads = (S | N);
+ getHex(10, 4).roads = (S | N);
+ getHex(11, 4).roads = (S | N);
+ getHex(4, 8).roads = (S | N);
+ getHex(5, 8).roads = (S | N);
+ getHex(6, 8).roads = (S | N);
+ getHex(7, 8).roads = (S | N);
+ getHex(8, 8).roads = (S | NE);
+ getHex(8, 7).roads = (SW | NE);
+ getHex(8, 6).roads = (SW | NE | N);
+ getHex(8, 5).roads = (SW | NE);
+ getHex(9, 6).roads = (S | N);
+ getHex(10, 6).roads = (S | N);
+ getHex(11, 6).roads = (S | N);
+ getHex(12, 6).roads = (S | N);
+ }
+}