diff options
-rw-r--r-- | core/src/ch/asynk/tankontank/game/GameCtrl.java | 29 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/GameFactory.java | 43 | ||||
-rw-r--r-- | core/src/ch/asynk/tankontank/game/Hud.java | 22 |
3 files changed, 62 insertions, 32 deletions
diff --git a/core/src/ch/asynk/tankontank/game/GameCtrl.java b/core/src/ch/asynk/tankontank/game/GameCtrl.java index e18b99d..af0f788 100644 --- a/core/src/ch/asynk/tankontank/game/GameCtrl.java +++ b/core/src/ch/asynk/tankontank/game/GameCtrl.java @@ -38,6 +38,9 @@ public class GameCtrl implements Disposable public Map map; public Hud hud; public Config cfg; + public Player gePlayer; + public Player usPlayer; + public Player currentPlayer; private GameState selectState; private GameState pathState; @@ -55,8 +58,9 @@ public class GameCtrl implements Disposable this.cfg = new Config(); this.factory = new GameFactory(game.manager); - this.hud = new Hud(this, game); this.map = factory.getMap(this, game.manager, GameFactory.MapType.MAP_A); + this.usPlayer = factory.getPlayer(Army.US); + this.gePlayer = factory.getPlayer(Army.GE); this.selectState = new GameStateSelect(this, map); this.pathState = new GameStateMove(); @@ -64,8 +68,9 @@ public class GameCtrl implements Disposable this.animationState = new GameStateAnimation(); this.state = selectState; + this.currentPlayer = factory.fakeSetup(map, gePlayer, usPlayer); - factory.fakeSetup(map); + this.hud = new Hud(this, game); } @Override @@ -101,6 +106,15 @@ public class GameCtrl implements Disposable } } + private void nextPlayer() + { + currentPlayer.turnEnd(); + currentPlayer = ((currentPlayer == usPlayer) ? gePlayer : usPlayer); + currentPlayer.turnStart(); + hud.updatePlayer(); + + } + public void setState(GameState.State state) { setState(state, true); @@ -113,6 +127,7 @@ public class GameCtrl implements Disposable switch(state) { case SELECT: this.state = selectState; + checkTurnEnd(); break; case MOVE: this.state = pathState; @@ -130,6 +145,16 @@ public class GameCtrl implements Disposable this.state.enter(normal); } + private void checkTurnEnd() + { + System.err.println(" current player : " + currentPlayer.toString()); + if (map.activatedPawnsCount() > 0) { + currentPlayer.burnDownOneAp(); + } + if (currentPlayer.apExhausted()) + nextPlayer(); + } + public void abort() { state.abort(); diff --git a/core/src/ch/asynk/tankontank/game/GameFactory.java b/core/src/ch/asynk/tankontank/game/GameFactory.java index bd4294a..b84715d 100644 --- a/core/src/ch/asynk/tankontank/game/GameFactory.java +++ b/core/src/ch/asynk/tankontank/game/GameFactory.java @@ -140,31 +140,42 @@ public class GameFactory implements Board.TileBuilder, Disposable return m; } + public Player getPlayer(Army army) + { + if (army == Army.US) + return new Player(Army.US, pawnAtlas, "us-flag", 10); + else + return new Player(Army.GE, pawnAtlas, "ge-flag", 10); + } + public Hex getNewTile(float cx, float cy) { return new Hex(cx, cy, pawnAtlas); } - public void fakeSetup(Map map) + public Player fakeSetup(Map map, Player gePlayer, Player usPlayer) { Orientation o = Orientation.NORTH; GridPoint2 p = new GridPoint2(); - map.setPawnAt(getUnit(UnitType.GE_AT_GUN), p.set(4, 7), o); - map.setPawnAt(getUnit(UnitType.GE_INFANTRY), p.set(3, 6), o); - map.setPawnAt(getUnit(UnitType.GE_KINGTIGER), p.set(3, 5), o); - map.setPawnAt(getUnit(UnitType.GE_PANZER_IV), p.set(2, 4), o); - map.setPawnAt(getUnit(UnitType.GE_PANZER_IV_HQ), p.set(2, 3), o); - map.setPawnAt(getUnit(UnitType.GE_TIGER), p.set(1, 2), o); - map.setPawnAt(getUnit(UnitType.GE_WESPE), p.set(1, 1), o); + + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_AT_GUN), p.set(4, 7), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_INFANTRY), p.set(3, 6), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_KINGTIGER), p.set(3, 5), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_PANZER_IV), p.set(2, 4), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_PANZER_IV_HQ), p.set(2, 3), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_TIGER), p.set(1, 2), o)); + gePlayer.addUnit(map.setPawnAt(getUnit(UnitType.GE_WESPE), p.set(1, 1), o)); o = Orientation.SOUTH; - map.setPawnAt(getUnit(UnitType.US_AT_GUN), p.set(12, 7), o); - map.setPawnAt(getUnit(UnitType.US_INFANTRY), p.set(11, 6), o); - map.setPawnAt(getUnit(UnitType.US_PERSHING), p.set(11, 5), o); - map.setPawnAt(getUnit(UnitType.US_PERSHING_HQ), p.set(10, 4), o); - map.setPawnAt(getUnit(UnitType.US_PRIEST), p.set(10, 3), o); - map.setPawnAt(getUnit(UnitType.US_SHERMAN), p.set(9, 2), o); - map.setPawnAt(getUnit(UnitType.US_SHERMAN_HQ), p.set(9, 1), o); - map.setPawnAt(getUnit(UnitType.US_WOLVERINE), p.set(8, 0), o); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_AT_GUN), p.set(12, 7), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_INFANTRY), p.set(11, 6), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PERSHING), p.set(11, 5), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PERSHING_HQ), p.set(10, 4), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_PRIEST), p.set(10, 3), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_SHERMAN), p.set(9, 2), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_SHERMAN_HQ), p.set(9, 1), o)); + usPlayer.addUnit(map.setPawnAt(getUnit(UnitType.US_WOLVERINE), p.set(8, 0), o)); + + return usPlayer; } } diff --git a/core/src/ch/asynk/tankontank/game/Hud.java b/core/src/ch/asynk/tankontank/game/Hud.java index 2273724..ee01a18 100644 --- a/core/src/ch/asynk/tankontank/game/Hud.java +++ b/core/src/ch/asynk/tankontank/game/Hud.java @@ -21,8 +21,6 @@ public class Hud implements Disposable private final TankOnTank game; private final GameCtrl ctrl; - private Image usFlag; - private Image geFlag; private Image flag; public Button moveBtn; @@ -46,18 +44,15 @@ public class Hud implements Disposable TextureAtlas atlas = game.manager.get("data/assets.atlas", TextureAtlas.class); - usFlag = new Image(atlas.findRegion("us-flag")); - geFlag = new Image(atlas.findRegion("ge-flag")); moveBtn = new Button(atlas, "btn-move"); rotateBtn = new Button(atlas, "btn-rotate"); attackBtn = new Button(atlas, "btn-attack"); checkBtn = new Button(atlas, "btn-check"); cancelBtn = new Button(atlas, "btn-cancel"); - flag = usFlag; + updatePlayer(); - usFlag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET)); - geFlag.setPosition(flag.getX(), flag.getY()); + flag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET)); // TODO add counters for // - Action Points // - Turn @@ -71,8 +66,6 @@ public class Hud implements Disposable @Override public void dispose() { - usFlag.dispose(); - geFlag.dispose(); moveBtn.dispose(); rotateBtn.dispose(); attackBtn.dispose(); @@ -82,11 +75,6 @@ public class Hud implements Disposable public void animate(float delta) { - elapsed += delta; - if (elapsed > 5f) { - elapsed = 0f; - flag = ((flag == usFlag) ? geFlag : usFlag); - } } public void draw(Batch batch) @@ -99,6 +87,12 @@ public class Hud implements Disposable if (cancelBtn.visible) cancelBtn.getImage().draw(batch); } + public void updatePlayer() + { + flag = ctrl.currentPlayer.getFlag(); + flag.setPosition(OFFSET, (Gdx.graphics.getHeight() - flag.getHeight() - OFFSET)); + } + private float setButton(Button btn, float x, float y) { // btn.setOff(); |