@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 } })); } } }