diff --git a/core/src/io/github/lonamiwebs/klooni/actors/Band.java b/core/src/io/github/lonamiwebs/klooni/actors/Band.java index a008b7a..db3e3e8 100644 --- a/core/src/io/github/lonamiwebs/klooni/actors/Band.java +++ b/core/src/io/github/lonamiwebs/klooni/actors/Band.java @@ -72,8 +72,9 @@ public class Band extends Actor { } // Once game over is set on the menu, it cannot be reverted - public void setGameOver() { - infoLabel.setText("no moves left"); + public void setMessage(final String message) { + if (!message.equals("")) + infoLabel.setText(message); } //endregion diff --git a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java index 1e67b6a..909a729 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java @@ -92,6 +92,8 @@ public abstract class BaseScorer implements BinSerializable { abstract public boolean isGameOver(); abstract protected boolean isNewRecord(); + public String gameOverReason() { return ""; } + abstract public void saveScore(); public void draw(SpriteBatch batch) { diff --git a/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java b/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java index c86ef85..3deb385 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java @@ -96,6 +96,9 @@ public class TimeScorer extends BaseScorer implements BinSerializable { return TimeUtils.nanoTime() > deadTime; } + @Override + public String gameOverReason() { return "time is up"; } + @Override public void saveScore() { if (isNewRecord()) { diff --git a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java index 46295f7..f27ba70 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java @@ -121,12 +121,12 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { return true; } - private void doGameOver() { + private void doGameOver(String gameOverReason) { if (!gameOverDone) { gameOverDone = true; holder.enabled = false; - pauseMenu.show(true); + pauseMenu.showGameOver(gameOverReason); if (Klooni.soundsEnabled()) gameOverSound.play(); @@ -157,7 +157,7 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { Klooni.addMoneyFromScore(newMoneyScore); // Show the pause menu - pauseMenu.show(false); + pauseMenu.show(); save(); } @@ -172,7 +172,7 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (scorer.isGameOver() && !pauseMenu.isShown()) { - doGameOver(); + doGameOver(scorer.gameOverReason()); } batch.begin(); @@ -227,7 +227,7 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { // After the piece was put, check if it's game over if (isGameOver()) { - doGameOver(); + doGameOver("no moves left"); } } return true; diff --git a/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java b/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java index 7881730..10c4cea 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java @@ -128,7 +128,7 @@ class PauseMenuStage extends Stage { //region Package local methods // Shows the pause menu, indicating whether it's game over or not - void show(final boolean gameOver) { + void show() { scorer.pause(); scorer.saveScore(); @@ -138,13 +138,15 @@ class PauseMenuStage extends Stage { shown = true; hiding = false; - if (gameOver) - band.setGameOver(); - addAction(Actions.moveTo(0, Gdx.graphics.getHeight())); addAction(Actions.moveTo(0, 0, 0.75f, Interpolation.swingOut)); } + void showGameOver(final String gameOverReason) { + band.setMessage(gameOverReason); + show(); + } + boolean isShown() { return shown; }