From c962128753d8e3a073a66c61913e0229af2ffc0b Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 14 May 2017 17:44:50 +0200 Subject: [PATCH] Overlay timer on time mode sharing --- .../io/github/lonamiwebs/klooni/ShareChallenge.java | 8 +++++++- .../github/lonamiwebs/klooni/screens/GameScreen.java | 6 ++++-- .../lonamiwebs/klooni/screens/PauseMenuStage.java | 5 +++-- .../lonamiwebs/klooni/screens/ShareScoreScreen.java | 11 ++++++++--- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/core/src/io/github/lonamiwebs/klooni/ShareChallenge.java b/core/src/io/github/lonamiwebs/klooni/ShareChallenge.java index b3bc28a..f471124 100644 --- a/core/src/io/github/lonamiwebs/klooni/ShareChallenge.java +++ b/core/src/io/github/lonamiwebs/klooni/ShareChallenge.java @@ -27,7 +27,7 @@ public abstract class ShareChallenge { public abstract void shareScreenshot(final boolean saveResult); // Saves the "Challenge me" shareable image to getShareImageFilePath() - public boolean saveChallengeImage(final int score) { + public boolean saveChallengeImage(final int score, final boolean timeMode) { final File saveAt = getShareImageFilePath(); if (!saveAt.getParentFile().isDirectory()) if (!saveAt.mkdirs()) @@ -66,6 +66,12 @@ public abstract class ShareChallenge { label.setPosition(40, 40); label.draw(batch, 1); + if (timeMode) { + Texture timeModeTexture = new Texture("ui/x1.5/stopwatch.png"); + batch.setColor(Color.BLACK); + batch.draw(timeModeTexture, 200, 340); + } + batch.end(); // Get the framebuffer pixels and write them to a local file diff --git a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java index 624ab34..3739786 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/GameScreen.java @@ -121,13 +121,13 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { return true; } - private void doGameOver(String gameOverReason) { + private void doGameOver(final String gameOverReason) { if (!gameOverDone) { gameOverDone = true; saveMoney(); holder.enabled = false; - pauseMenu.showGameOver(gameOverReason); + pauseMenu.showGameOver(gameOverReason, scorer instanceof TimeScorer); if (Klooni.soundsEnabled()) gameOverSound.play(); @@ -167,6 +167,8 @@ class GameScreen implements Screen, InputProcessor, BinSerializable { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (scorer.isGameOver() && !pauseMenu.isShown()) { + // TODO A bit hardcoded (timeOver = scorer instanceof TimeScorer) + // Perhaps have a better mode to pass the required texture to overlay doGameOver(scorer.gameOverReason()); } diff --git a/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java b/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java index 1a9d341..726714d 100644 --- a/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/PauseMenuStage.java @@ -148,15 +148,16 @@ class PauseMenuStage extends Stage { addAction(Actions.moveTo(0, 0, 0.75f, Interpolation.swingOut)); } - void showGameOver(final String gameOverReason) { + void showGameOver(final String gameOverReason, final boolean timeMode) { if (game.shareChallenge != null) { playButton.removeListener(playChangeListener); playButton.updateImage("share_texture"); playButton.addListener(new ChangeListener() { public void changed(ChangeEvent event, Actor actor) { // Don't dispose because then it needs to take us to the previous screen + game.transitionTo(new ShareScoreScreen( - game, game.getScreen(), scorer.getCurrentScore()), false); + game, game.getScreen(), scorer.getCurrentScore(), timeMode), false); } }); } diff --git a/core/src/io/github/lonamiwebs/klooni/screens/ShareScoreScreen.java b/core/src/io/github/lonamiwebs/klooni/screens/ShareScoreScreen.java index 6226089..c5c02d9 100755 --- a/core/src/io/github/lonamiwebs/klooni/screens/ShareScoreScreen.java +++ b/core/src/io/github/lonamiwebs/klooni/screens/ShareScoreScreen.java @@ -36,17 +36,22 @@ class ShareScoreScreen implements Screen { private final Label infoLabel; private final SpriteBatch spriteBatch; - private final Screen lastScreen; private final int score; + private final boolean timeMode; + + private final Screen lastScreen; //endregion //region Constructor - ShareScoreScreen(final Klooni game, final Screen lastScreen, final int score) { + ShareScoreScreen(final Klooni game, final Screen lastScreen, + final int score, final boolean timeMode) { this.game = game; this.lastScreen = lastScreen; + this.score = score; + this.timeMode = timeMode; final Label.LabelStyle labelStyle = new Label.LabelStyle(); labelStyle.font = game.skin.getFont("font_small"); @@ -76,7 +81,7 @@ class ShareScoreScreen implements Screen { @Override public void show() { - final boolean ok = game.shareChallenge.saveChallengeImage(score); + final boolean ok = game.shareChallenge.saveChallengeImage(score, timeMode); game.shareChallenge.shareScreenshot(ok); goBack(); }