diff options
Diffstat (limited to 'core/src/ch/asynk')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Ctrl.java | 9 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Hud.java | 49 | 
2 files changed, 43 insertions, 15 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/Ctrl.java b/core/src/ch/asynk/tankontank/game/Ctrl.java index 24e9344..5595b85 100644 --- a/core/src/ch/asynk/tankontank/game/Ctrl.java +++ b/core/src/ch/asynk/tankontank/game/Ctrl.java @@ -13,6 +13,8 @@ import ch.asynk.tankontank.game.states.StateBreak;  import ch.asynk.tankontank.game.states.StateAnimation;  import ch.asynk.tankontank.game.states.StateEntry; +import ch.asynk.tankontank.screens.OptionsScreen; +  public class Ctrl implements Disposable  {      private final TankOnTank game; @@ -106,7 +108,7 @@ public class Ctrl implements Disposable          player.turnEnd();          Player winner = battle.checkVictory(this);          if (winner != null) { -            TankOnTank.debug("TODO " + winner + " has won !!!!!!!!!!!"); +            hud.victory(winner, ((winner == player) ? opponent : player));          }          Player tmp = player;          player = opponent; @@ -195,4 +197,9 @@ public class Ctrl implements Disposable          if (!blockMap && state.upInMap(x, y))              state.touchUp();      } + +    public void endGame() +    { +        game.setScreen(new OptionsScreen(game)); +    }  } diff --git a/core/src/ch/asynk/tankontank/game/Hud.java b/core/src/ch/asynk/tankontank/game/Hud.java index c717408..f441931 100644 --- a/core/src/ch/asynk/tankontank/game/Hud.java +++ b/core/src/ch/asynk/tankontank/game/Hud.java @@ -12,13 +12,14 @@ import com.badlogic.gdx.math.Vector2;  import com.badlogic.gdx.math.Rectangle;  import ch.asynk.tankontank.engine.gfx.Image; +  import ch.asynk.tankontank.game.State.StateType;  import ch.asynk.tankontank.game.hud.Msg; -import ch.asynk.tankontank.game.hud.Bg;  import ch.asynk.tankontank.game.hud.ActionButtons;  import ch.asynk.tankontank.game.hud.LabelImage;  import ch.asynk.tankontank.game.hud.UnitDock;  import ch.asynk.tankontank.game.hud.OkCancel; +import ch.asynk.tankontank.game.hud.Statistics;  import ch.asynk.tankontank.game.hud.Position;  import ch.asynk.tankontank.TankOnTank; @@ -47,12 +48,14 @@ public class Hud implements Disposable      private BitmapFont font; +    private Statistics stats;      private OkCancel okCancel; -    private OkCancelAction okCancelAction; +    private DialogAction dialogAction; -    enum OkCancelAction +    enum DialogAction      {          END_TURN, +        END_GAME      }      public Hud(final Ctrl ctrl, final TankOnTank game) @@ -75,6 +78,7 @@ public class Hud implements Disposable          msg = new Msg(font, atlas.findRegion("disabled"), 10f);          okCancel = new OkCancel(font, atlas.findRegion("disabled"), atlas, 10f); +        stats = new Statistics(font, atlas.findRegion("disabled"), atlas, 10f);          float x = OFFSET;          float y = (Gdx.graphics.getHeight() - OFFSET); @@ -104,6 +108,7 @@ public class Hud implements Disposable          msg.dispose();          okCancel.dispose(); +        stats.dispose();      }      public void changeState(StateType from, StateType to) @@ -154,6 +159,7 @@ public class Hud implements Disposable          msg.draw(batch);          okCancel.draw(batch); +        stats.draw(batch);      }      public void drawDebug(ShapeRenderer debugShapes) @@ -168,6 +174,7 @@ public class Hud implements Disposable          msg.drawDebug(debugShapes);          okCancel.drawDebug(debugShapes); +        stats.drawDebug(debugShapes);      }      public Unit getDockUnit() @@ -210,6 +217,8 @@ public class Hud implements Disposable              hit = reinforcement;          else if (okCancel.hit(x, y))              hit = okCancel; +        else if (stats.hit(x, y)) +            hit = stats;          else              return false; @@ -230,31 +239,43 @@ public class Hud implements Disposable          else if ((hit == unitDock) && unitDock.hit(x, y))              ctrl.setState(StateType.ENTRY);          else if ((hit == okCancel) && okCancel.hit(x, y)) -            closeOkCancel(); +            closeDialog(); +        else if ((hit == stats) && stats.hit(x, y)) +            closeDialog();          hit = null;          return true;      } -    private void closeOkCancel() +    private void closeDialog()      { -        ctrl.blockMap = false; -        okCancel.visible = false; -        if (okCancel.ok) { -            switch(okCancelAction) -            { -                case END_TURN: +        switch(dialogAction) +        { +            case END_TURN: +                if (okCancel.ok)                      ctrl.endPlayerTurn(); -                    break; -            } +                okCancel.visible = false; +                break; +            case END_GAME: +                stats.visible = false; +                ctrl.endGame(); +                break;          } +        ctrl.blockMap = false;      }      private void askEndTurn()      {          ctrl.blockMap = true; -        okCancelAction = OkCancelAction.END_TURN; +        dialogAction = DialogAction.END_TURN;          okCancel.show("You still have Action Points left.\nEnd your Turn anyway ?", Position.MIDDLE_CENTER);      } + +    public void victory(Player winner, Player loser) +    { +        ctrl.blockMap = true; +        dialogAction = DialogAction.END_GAME; +        stats.show(winner, loser, Position.MIDDLE_CENTER); +    }  } | 
