예제 #1
0
  @Override
  public void update(long dt) {
    camera.update(dt);
    state.update(dt);

    playerDisplayRotation.update(dt);

    if (!(pmx == 0 && pmy == 0) && !state.isBlockAnimInEffect()) {
      movePlayer(pmx, pmy);
      pmx = pmy = 0;
    }

    if (state.hasPlayerWon()) {
      if (modeController.getCurrentMode().getId() == getId()) {
        modeController.popMode();

        String exitText = context.getString(state.exitText);
        if (exitText == null) {
          exitText = "Congratulations!";
        }

        modeController.pushMode(
            new GameDialogMode(
                this,
                exitText,
                new GameDialogMode.OnResult() {
                  public void onResult() {
                    state.revertAllMoves();
                    state.update(
                        0); // Update because revert doesn't take effect until next update is called
                  }
                }));
      }
    }
  }