From 6fa3607373d1730e19acbddb113b4fdb31a20e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz> Date: Wed, 7 Oct 2015 16:24:51 +0200 Subject: [PATCH] #7 Added summary text on Victory Dialog --- .../text/game/robbery/robbery_cs.properties | 8 +- .../text/game/robbery/robbery_de.properties | 8 +- .../text/game/robbery/robbery_sk.properties | 10 +- core/assets/common/game/_global/stats.png | Bin 0 -> 1561 bytes core/assets/common/game/_global/time.png | Bin 0 -> 1854 bytes .../tablexia/game/AbstractTablexiaGame.java | 142 +++++++++++++++--- .../in_the_darkness/InTheDarknessGame.java | 5 + .../game/games/kidnapping/KidnappingGame.java | 6 + .../games/night_watch/NightWatchGame.java | 8 +- .../game/games/pursuit/PursuitGame.java | 6 + .../game/games/robbery/RobberyGame.java | 13 ++ .../shooting_range/ShootingRangeGame.java | 6 + core/src/cz/nic/tablexia/model/game/Game.java | 5 + .../tablexia/util/ui/dialog/TextDialog.java | 10 +- 14 files changed, 184 insertions(+), 43 deletions(-) create mode 100644 core/assets/common/game/_global/stats.png create mode 100644 core/assets/common/game/_global/time.png diff --git a/android/assets/text/game/robbery/robbery_cs.properties b/android/assets/text/game/robbery/robbery_cs.properties index b156160e8..1a4bce2df 100644 --- a/android/assets/text/game/robbery/robbery_cs.properties +++ b/android/assets/text/game/robbery/robbery_cs.properties @@ -5,10 +5,10 @@ game_robbery_victorytext_threestars=S takovouhle ostrahou nepotĹ™ebuje banka ani game_robbery_victorytext_twostar=Tvoje jmĂ©no si uĹľ zaÄŤĂnajà štÄ›betat\ni straky na stĹ™echách. game_robbery_victorytext_onestar=Otázka je, jestli zĹŻstal trezor poloplnĂ˝,\nnebo poloprázdnĂ˝. game_robbery_victorytext_nostar=U lupiÄŤĹŻ jsi rozhodnÄ› nejoblĂbenÄ›jšà hlĂdaÄŤ.\nKdyĹľ budeš trĂ©novat, urÄŤitÄ› se tÄ› budou brzy bát. -game_robbery_victorytext_stats=SprávnÄ› jsi {0} <b>{1}/{2}</b> návštÄ›vnĂkĹŻ. -game_robbery_victorytext_stats_identification=identifikoval/a -game_robbery_victorytext_stats_identification_male=identifikoval -game_robbery_victorytext_stats_identification_female=identifikovala +game_robbery_victorytext_summary=SprávnÄ› jsi {0} [BLACK]{1}/{2}[] návštÄ›vnĂkĹŻ. +game_robbery_victorytext_summary_identification=identifikoval/a +game_robbery_victorytext_summary_identification_male=identifikoval +game_robbery_victorytext_summary_identification_female=identifikovala game_robbery_color_red=ÄŤerven game_robbery_color_green=zelen game_robbery_color_blue=modr diff --git a/android/assets/text/game/robbery/robbery_de.properties b/android/assets/text/game/robbery/robbery_de.properties index 493a1fd0c..acb3e41f0 100644 --- a/android/assets/text/game/robbery/robbery_de.properties +++ b/android/assets/text/game/robbery/robbery_de.properties @@ -5,10 +5,10 @@ game_robbery_victorytext_threestars=Mit einer solchen Wache braucht die Bank nic game_robbery_victorytext_twostar=Deinen Namen pfeifen langsam schon \ndie Elstern von den Dächern. game_robbery_victorytext_onestar=Die Frage ist, ob der Tresor halb voll, \noder halb leer geblieben ist. game_robbery_victorytext_nostar=Du bist bei den Räubern eindeutig der beliebteste Wächter.\nWenn du trainierst, werden sie bald Angst vor dir haben. -game_robbery_victorytext_stats=Du hast {0} Besucher richtig <b>{1}/{2}</b>. -game_robbery_victorytext_stats_identification=identifiziert -game_robbery_victorytext_stats_identification_male=identifiziert -game_robbery_victorytext_stats_identification_female=identifiziert +game_robbery_victorytext_summary=Du hast {0} Besucher richtig [BLACK]{1}/{2}[]. +game_robbery_victorytext_summary_identification=identifiziert +game_robbery_victorytext_summary_identification_male=identifiziert +game_robbery_victorytext_summary_identification_female=identifiziert game_robbery_color_red=rot game_robbery_color_green=grĂĽn game_robbery_color_blue=blau diff --git a/android/assets/text/game/robbery/robbery_sk.properties b/android/assets/text/game/robbery/robbery_sk.properties index 2bf7494fb..2a0c6da4d 100644 --- a/android/assets/text/game/robbery/robbery_sk.properties +++ b/android/assets/text/game/robbery/robbery_sk.properties @@ -5,11 +5,11 @@ game_robbery_loadingtext=Na zaÄŤiatku hry si preÄŤĂtaj pravidlo, podÄľa ktorĂ©h game_robbery_victorytext_threestars=S takouto ostrahou nepotrebuje banka ani trezor. game_robbery_victorytext_twostar=Tvoje meno si zaÄŤĂnajĂş štebotaĹĄ aj straky na strechách. game_robbery_victorytext_onestar=Otázka je, ÄŤi ostal trezor poloplnĂ˝ alebo poloprázdnĂ˝. -game_robbery_victorytext_nostar=U lupiÄŤov si rozhodne najobľúbenejšà strážca. Ak budeš trĂ©novaĹĄ, urÄŤite sa ĹĄa budĂş skoro báť. -game_robbery_victorytext_stats=Správne si {0} <b>{1}/{2}</b> návštevnĂkov. -game_robbery_victorytext_stats_identification=identifikoval/a -game_robbery_victorytext_stats_identification_male=identifikoval -game_robbery_victorytext_stats_identification_female=identifikovala +game_robbery_victorytext_nostar=U lupiÄŤov si rozhodne najobľúbenejšà strážca. \nAk budeš trĂ©novaĹĄ, urÄŤite sa ĹĄa budĂş skoro báť. +game_robbery_victorytext_summary=Správne si {0} [BLACK]{1}/{2}[] návštevnĂkov. +game_robbery_victorytext_summary_identification=identifikoval/a +game_robbery_victorytext_summary_identification_male=identifikoval +game_robbery_victorytext_summary_identification_female=identifikovala game_robbery_color_red=ÄŤerven game_robbery_color_green=zelen game_robbery_color_blue=modr diff --git a/core/assets/common/game/_global/stats.png b/core/assets/common/game/_global/stats.png new file mode 100644 index 0000000000000000000000000000000000000000..6653080bd64497e175c050d5daa2eabd0ca4b3a2 GIT binary patch literal 1561 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 B%N76t literal 0 HcmV?d00001 diff --git a/core/assets/common/game/_global/time.png b/core/assets/common/game/_global/time.png new file mode 100644 index 0000000000000000000000000000000000000000..d76c55eaca7633c8c565efe4eea6273c02d7b2f5 GIT binary patch literal 1854 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 literal 0 HcmV?d00001 diff --git a/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java b/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java index 36b41dab9..74eabddbf 100644 --- a/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java +++ b/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java @@ -2,12 +2,14 @@ package cz.nic.tablexia.game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Music; +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.Action; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Cell; import com.badlogic.gdx.scenes.scene2d.ui.Dialog; +import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Stack; @@ -29,13 +31,13 @@ import cz.nic.tablexia.bus.event.DimmerControlEvent; import cz.nic.tablexia.bus.event.MenuControlEvent; import cz.nic.tablexia.game.common.TablexiaRandom; import cz.nic.tablexia.game.difficulty.GameDifficulty; +import cz.nic.tablexia.loader.application.ApplicationFontManager; import cz.nic.tablexia.loader.application.ApplicationTextManager; import cz.nic.tablexia.model.game.Game; import cz.nic.tablexia.screen.AbstractTablexiaScreen; import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.ui.TablexiaButton; import cz.nic.tablexia.util.ui.dialog.TwoButtonDialog; -import cz.nic.tablexia.util.ui.dialog.text.DialogTextContent; import static com.badlogic.gdx.scenes.scene2d.actions.Actions.delay; import static com.badlogic.gdx.scenes.scene2d.actions.Actions.run; @@ -95,16 +97,29 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> private static final String GAME_GLOBAL_PATH = "game/_global/"; private static final String GLOBAL_ATLAS_NAME = GAME_GLOBAL_PATH + "_global.atlas"; - private static final String VICTORYSCREEN_SHOW_SOUND = GAME_GLOBAL_PATH + "victoryscreen_show.mp3"; private static final String RATINGSTAR1_SOUND = GAME_GLOBAL_PATH + "victoryscreen_star1.mp3"; private static final String RATINGSTAR2_SOUND = GAME_GLOBAL_PATH + "victoryscreen_star2.mp3"; private static final String RATINGSTAR3_SOUND = GAME_GLOBAL_PATH + "victoryscreen_star3.mp3"; - - public static final String VICTORYSCREEN_RESULTSBANNER = "resultsbanner"; - public static final String VICTORYSCREEN_RATINGSTAR_DISABLED = "ratingstar_disabled"; - public static final String VICTORYSCREEN_RATINGSTAR_ENABLED = "ratingstar_enabled"; - - private static final int VICTORYSCREEN_SHOW_SOUND_DELAY = 2; + private static final String VICTORY_DIALOG_SHOW_SOUND = GAME_GLOBAL_PATH + "victoryscreen_show.mp3"; + + public static final String VICTORY_DIALOG_RESULTSBANNER = "resultsbanner"; + public static final String VICTORY_DIALOG_RATINGSTAR_DISABLED = "ratingstar_disabled"; + public static final String VICTORY_DIALOG_RATINGSTAR_ENABLED = "ratingstar_enabled"; + public static final String VICTORY_DIALOG_SUMMARY_ICON_STATS = "stats"; + public static final String VICTORY_DIALOG_SUMMARY_ICON_TIME = "time"; + private static final String VICTORY_DIALOG_TUTORIAL_TEXT = "victoryscreen_text_tutorial"; + + private static final int VICTORY_DIALOG_SHOW_SOUND_DELAY = 2; + + private static final String VICTORY_DIALOG_TEXT_FONT_TYPE = ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR; + private static final float VICTORY_DIALOG_TEXT_FONT_SCALE = 0.8f; + private static final int VICTORY_DIALOG_TEXT_PADDING_BOTTOM = 25; + private static final int VICTORY_DIALOG_TEXT_PADDING_TOP = 15; + private static final Color VICTORY_DIALOG_TEXT_FONT_COLOR = Color.BLACK; + private static final float VICTORY_DIALOG_SUMMARY_IMAGE_SIZE = 0.7f; + private static final Color VICTORY_DIALOG_SUMMARY_FONT_COLOR = Color.DARK_GRAY; + private static final String VICTORY_DIALOG_SUMMARY_FONT_TYPE = ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR; + private static final float VICTORY_DIALOG_SUMMARY_TEXT_SIZE = 0.7f; public static final String RANDOM_SEED_SCREEN_INFO_LABEL = "Random Seed"; public static final String GAME_DIFFICULTY_SCREEN_INFO_LABEL = "Game Difficulty"; @@ -202,7 +217,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> @Override protected final void prepareScreenSoundAssetNames(List<String> soundsFileNames) { prepareGameSoundAssetNames(soundsFileNames); - loadSound(VICTORYSCREEN_SHOW_SOUND); + loadSound(VICTORY_DIALOG_SHOW_SOUND); loadSound(RATINGSTAR1_SOUND); loadSound(RATINGSTAR2_SOUND); loadSound(RATINGSTAR3_SOUND); @@ -335,6 +350,41 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> private final float DIALOG_POSITION_X = (AbstractTablexiaGame.this.getStage().getWidth() / 2) - (DIALOG_WIDTH / 2); private final float DIALOG_POSITION_Y = (TablexiaSettings.getMinWorldHeight() / 2) - (DIALOG_HEIGHT / 2); // TODO fix for floating screen + public enum SummaryImage { + + STATS (VICTORY_DIALOG_SUMMARY_ICON_STATS), + TIME (VICTORY_DIALOG_SUMMARY_ICON_TIME); + + private String imageName; + + SummaryImage(String imageName) { + this.imageName = imageName; + } + + public String getImageName() { + return imageName; + } + } + + public static class SummaryMessage { + + private final SummaryImage summaryImage; + private final String text; + + public SummaryMessage(SummaryImage summaryImage, String text) { + this.summaryImage = summaryImage; + this.text = text; + } + + public SummaryImage getSummaryImage() { + return summaryImage; + } + + public String getText() { + return text; + } + } + private class VictoryDialog extends TwoButtonDialog { public static final int RATINGSTARS_COUNT = 3; @@ -349,13 +399,13 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> private Music victorySpeech; private Table ratingStarTable; - public VictoryDialog(String text) { + public VictoryDialog() { super(DIALOG_POSITION_X, DIALOG_POSITION_Y, DIALOG_WIDTH, DIALOG_HEIGHT, BackGroundType.DIALOG_SQUARE_BORDERLINES, - new DialogTextContent(text), + null, TablexiaButton.ButtonType.BLUE, TablexiaButton.ButtonType.GREEN, ApplicationTextManager.getInstance().getText(ApplicationTextManager.ApplicationTextsAssets.VICTORYSCREEN_BUTTON_CHANGEGAME), @@ -379,7 +429,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> @Override protected void prepareContent() { // RESULTS BANNER - Image resultsBanner = new Image(getGameGlobalTextureRegion(VICTORYSCREEN_RESULTSBANNER)); + Image resultsBanner = new Image(getGameGlobalTextureRegion(VICTORY_DIALOG_RESULTSBANNER)); float resultBannerWidth = getWidth() * RESULTSBANNER_WIDTH_RATIO; float resultsBannerSizeRatio = resultBannerWidth / resultsBanner.getWidth(); getContentTable().add(resultsBanner).width(resultBannerWidth).height(resultsBanner.getHeight() * resultsBannerSizeRatio).padTop(getHeight() * RESULTSBANNER_TOPPADDING_RATIO).center().colspan(3); @@ -393,13 +443,61 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> } getContentTable().add(ratingStarTable).center(); getContentTable().row(); + + // MAIN TEXT + String victoryDialogText; + if (getGameDifficulty() == GameDifficulty.TUTORIAL) { + victoryDialogText = ApplicationTextManager.getInstance().getText(VICTORY_DIALOG_TUTORIAL_TEXT); + } else { + String textKey = getTextKeyForGameResult(game.getGameResult()); + victoryDialogText = textKey != null ? getText(textKey) : ""; + } + getContentTable().row(); + Label resultText = new Label(victoryDialogText, new Label.LabelStyle(ApplicationFontManager.getInstance().getFont(VICTORY_DIALOG_TEXT_FONT_TYPE), VICTORY_DIALOG_TEXT_FONT_COLOR)); + resultText.setAlignment(Align.center); + resultText.setFontScale(VICTORY_DIALOG_TEXT_FONT_SCALE); + getContentTable().add(resultText).padBottom(VICTORY_DIALOG_TEXT_PADDING_BOTTOM).padTop(VICTORY_DIALOG_TEXT_PADDING_TOP).center(); + getContentTable().row(); + + // SUMMARY TEXT + HorizontalGroup horizontalGroup = new HorizontalGroup(); + List<SummaryMessage> summaryMessages = getSummaryMessageForGameResult(getGame()); + if (summaryMessages != null) { + for (SummaryMessage summaryMessage : summaryMessages) { + horizontalGroup.addActor(createSummaryGroup(summaryMessage)); + } + } + getContentTable().add(horizontalGroup).padBottom(15).center(); + getContentTable().row(); + super.prepareContent(); } + private HorizontalGroup createSummaryGroup(SummaryMessage summaryMessage) { + HorizontalGroup horizontalGroup = new HorizontalGroup(); + + if (summaryMessage.getSummaryImage() != null) { + Image image = new Image(getGameGlobalTextureRegion(summaryMessage.getSummaryImage().getImageName())); + image.setOrigin(Align.center); + image.setScale(VICTORY_DIALOG_SUMMARY_IMAGE_SIZE); + horizontalGroup.addActor(image); + } + + if (summaryMessage.getText() != null) { + BitmapFont font = ApplicationFontManager.getInstance().getFont(VICTORY_DIALOG_SUMMARY_FONT_TYPE); + font.getData().markupEnabled = true; + Label summaryText = new Label(summaryMessage.getText(), new Label.LabelStyle(font, VICTORY_DIALOG_SUMMARY_FONT_COLOR)); + summaryText.setFontScale(VICTORY_DIALOG_SUMMARY_TEXT_SIZE); + horizontalGroup.addActor(summaryText); + } + + return horizontalGroup; + } + private void createRatingStar(int starNumber, Table ratingStartTable) { Stack ratingStack = new Stack(); - Image ratingStarDisabled = new Image(getGameGlobalTextureRegion(VICTORYSCREEN_RATINGSTAR_DISABLED)); - Image ratingStarEnabled = new Image(getGameGlobalTextureRegion(VICTORYSCREEN_RATINGSTAR_ENABLED)); + Image ratingStarDisabled = new Image(getGameGlobalTextureRegion(VICTORY_DIALOG_RATINGSTAR_DISABLED)); + Image ratingStarEnabled = new Image(getGameGlobalTextureRegion(VICTORY_DIALOG_RATINGSTAR_ENABLED)); ratingStarEnabled.setVisible(false); ratingStarsEnabled[starNumber] = ratingStarEnabled; @@ -418,13 +516,13 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> final GameResult gameResult = game.getGameResult(); // victory dialog sound - getSound(VICTORYSCREEN_SHOW_SOUND, false).play(); + getSound(VICTORY_DIALOG_SHOW_SOUND, false).play(); if (getGameDifficulty() != GameDifficulty.TUTORIAL) { // result speech final String soundNameForGameResult = getSoundNameForGameResult(gameResult); if (soundNameForGameResult != null) { - addAction(sequence(delay(VICTORYSCREEN_SHOW_SOUND_DELAY), run(new Runnable() { + addAction(sequence(delay(VICTORY_DIALOG_SHOW_SOUND_DELAY), run(new Runnable() { @Override public void run() { victorySpeech = getMusic(soundNameForGameResult); @@ -490,15 +588,7 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> gamePhase = GamePhase.FINISHED; game.endGame(); Log.info(getClass(), "[DB] Ended game: " + game); - - String victoryDialogText; - if (getGameDifficulty() == GameDifficulty.TUTORIAL) { - victoryDialogText = ApplicationTextManager.getInstance().getText("victoryscreen_text_tutorial"); - } else { - String textKey = getTextKeyForGameResult(game.getGameResult()); - victoryDialogText = textKey != null ? getText(textKey) : ""; - } - (new VictoryDialog(victoryDialogText)).show(getStage()); + (new VictoryDialog()).show(getStage()); } public void startNewGame() { @@ -514,6 +604,8 @@ public abstract class AbstractTablexiaGame<T> extends AbstractTablexiaScreen<T> }); } + protected abstract List<SummaryMessage> getSummaryMessageForGameResult(Game game); + protected abstract String getTextKeyForGameResult(GameResult gameResult); protected abstract String getSoundNameForGameResult(GameResult gameResult); diff --git a/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java b/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java index b78515503..3c3d2b343 100644 --- a/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java +++ b/core/src/cz/nic/tablexia/game/games/in_the_darkness/InTheDarknessGame.java @@ -319,6 +319,11 @@ public class InTheDarknessGame extends AbstractTablexiaGame<List<MapWidget>> imp alignScreenContent(); } + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + return null; + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { switch (gameResult) { diff --git a/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java b/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java index 55b4c8a0e..86dffda7f 100644 --- a/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java +++ b/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java @@ -33,6 +33,7 @@ import cz.nic.tablexia.game.games.kidnapping.model.Direction; import cz.nic.tablexia.game.games.kidnapping.model.GameState; import cz.nic.tablexia.game.games.kidnapping.model.Position; import cz.nic.tablexia.game.games.kidnapping.util.DirectionsHelper; +import cz.nic.tablexia.model.game.Game; import cz.nic.tablexia.util.Log; /** @@ -193,6 +194,11 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> { return 0; } + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + return null; + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { return null; diff --git a/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java b/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java index 267e21a76..fcee03b6b 100644 --- a/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java +++ b/core/src/cz/nic/tablexia/game/games/night_watch/NightWatchGame.java @@ -27,6 +27,7 @@ import cz.nic.tablexia.game.games.night_watch.helper.TextureHelper; import cz.nic.tablexia.game.games.night_watch.solution.GameSolutionGenerator; import cz.nic.tablexia.game.games.night_watch.solution.Solution; import cz.nic.tablexia.game.games.night_watch.subscene.Watch; +import cz.nic.tablexia.model.game.Game; import cz.nic.tablexia.util.Log; import cz.nic.tablexia.util.Utility; import cz.nic.tablexia.util.ui.TablexiaButton; @@ -194,7 +195,7 @@ public class NightWatchGame extends AbstractTablexiaGame<int[][]> { Action action = new Action() { @Override public boolean act(float delta) { - Log.info(getClass(),"PLAY"); + Log.info(getClass(), "PLAY"); userPlaying = true; enableClickables(true); return true; @@ -345,6 +346,11 @@ public class NightWatchGame extends AbstractTablexiaGame<int[][]> { return new Color(getData()[clickX][clickY]); } + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + return null; + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { return null; diff --git a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java index 1edd5b6b0..c22562e2b 100644 --- a/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java +++ b/core/src/cz/nic/tablexia/game/games/pursuit/PursuitGame.java @@ -7,6 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.utils.Array; +import java.util.List; import java.util.Map; import cz.nic.tablexia.TablexiaSettings; @@ -250,6 +251,11 @@ public class PursuitGame extends AbstractTablexiaGame<int[][]> { finishFlag.setVisible(true); } + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + return null; + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { return ResultMapping.getResultTextMappingForGameResult(gameResult).getTextKey(); diff --git a/core/src/cz/nic/tablexia/game/games/robbery/RobberyGame.java b/core/src/cz/nic/tablexia/game/games/robbery/RobberyGame.java index 2807054c2..b150a18a2 100644 --- a/core/src/cz/nic/tablexia/game/games/robbery/RobberyGame.java +++ b/core/src/cz/nic/tablexia/game/games/robbery/RobberyGame.java @@ -4,6 +4,7 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputMultiplexer; import com.badlogic.gdx.InputProcessor; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -13,6 +14,7 @@ import cz.nic.tablexia.game.games.robbery.assets.RobberyAssets; import cz.nic.tablexia.game.games.robbery.creature.CreatureFactory; import cz.nic.tablexia.game.games.robbery.rules.GameRule; import cz.nic.tablexia.game.games.robbery.rules.GameRulesDefinition; +import cz.nic.tablexia.model.User; import cz.nic.tablexia.model.game.Game; import cz.nic.tablexia.screen.AbstractTablexiaScreen; @@ -69,6 +71,10 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> { } } + private static final String SUMMARY_TEXT_KEY = "game_robbery_victorytext_summary"; + private static final String SUMMARY_IDENTIFICATION_MALE_TEXT_KEY = "game_robbery_victorytext_summary_identification_male"; + private static final String SUMMARY_IDENTIFICATION_FEMALE_TEXT_KEY = "game_robbery_victorytext_summary_identification_female"; + private static final String SCORE_KEY_PERSON_COUNT = "person_count"; private static final String SCORE_KEY_THIEVES_COUNT = "thieves_count"; private static final String SCORE_KEY_CAUGHT_THIEF = "caught_thief"; @@ -190,6 +196,13 @@ public class RobberyGame extends AbstractTablexiaGame<GameRule> { //////////////////////////// ABSTRACT TABLEXIA GAME + + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + String identification = game.getUser().getGender() == User.Gender.MALE ? getText(SUMMARY_IDENTIFICATION_MALE_TEXT_KEY) : getText(SUMMARY_IDENTIFICATION_FEMALE_TEXT_KEY); + return Arrays.asList(new SummaryMessage(null, getFormattedText(SUMMARY_TEXT_KEY, identification, game.getGameScore(SCORE_KEY_PERSON_NUMBER, "0"), game.getGameScore(SCORE_KEY_PERSON_COUNT)))); + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { return ResultMapping.getResultTextMappingForGameResult(gameResult).getTextKey(); diff --git a/core/src/cz/nic/tablexia/game/games/shooting_range/ShootingRangeGame.java b/core/src/cz/nic/tablexia/game/games/shooting_range/ShootingRangeGame.java index 9dd3d41de..bb83ce3e1 100644 --- a/core/src/cz/nic/tablexia/game/games/shooting_range/ShootingRangeGame.java +++ b/core/src/cz/nic/tablexia/game/games/shooting_range/ShootingRangeGame.java @@ -30,6 +30,7 @@ import cz.nic.tablexia.game.games.shooting_range.tools.HitEvaluator; import cz.nic.tablexia.game.games.shooting_range.tools.PixelPerfectHitEvaluator; import cz.nic.tablexia.game.games.shooting_range.tools.TargetGenerator; import cz.nic.tablexia.game.games.shooting_range.tools.TargetPositionController; +import cz.nic.tablexia.model.game.Game; /** * Created by lhoracek @@ -273,6 +274,11 @@ public class ShootingRangeGame extends AbstractTablexiaGame<GameState> { score.setPosition(getStage().getWidth() - score.getWidth() - 50, 25); } + @Override + protected List<SummaryMessage> getSummaryMessageForGameResult(Game game) { + return null; + } + @Override protected String getTextKeyForGameResult(GameResult gameResult) { return Properties.RESULT_TEXT[gameResult.getStarCount()]; diff --git a/core/src/cz/nic/tablexia/model/game/Game.java b/core/src/cz/nic/tablexia/model/game/Game.java index fffaf6082..d76836e08 100644 --- a/core/src/cz/nic/tablexia/model/game/Game.java +++ b/core/src/cz/nic/tablexia/model/game/Game.java @@ -160,6 +160,11 @@ public class Game { }).start(); } + public String getGameScore(String key, String defaultValue) { + String gameScore = getGameScore(key); + return gameScore != null ? gameScore : defaultValue; + } + public String getGameScore(String key) { return gameScoreMap.get(key); } diff --git a/core/src/cz/nic/tablexia/util/ui/dialog/TextDialog.java b/core/src/cz/nic/tablexia/util/ui/dialog/TextDialog.java index e054caefd..f32913571 100644 --- a/core/src/cz/nic/tablexia/util/ui/dialog/TextDialog.java +++ b/core/src/cz/nic/tablexia/util/ui/dialog/TextDialog.java @@ -30,11 +30,13 @@ public class TextDialog extends TablexiaDialog { @Override protected void prepareContent() { - if (dialogTextContent.getTitle() != null && !dialogTextContent.getTitle().equals("")) { - addLabel(dialogTextContent.getTitle(), ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_BOLD)); - getContentTable().row(); + if (dialogTextContent != null) { + if (dialogTextContent.getTitle() != null && !dialogTextContent.getTitle().equals("")) { + addLabel(dialogTextContent.getTitle(), ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_BOLD)); + getContentTable().row(); + } + addLabel(dialogTextContent.getContent(), ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR)).center().expand().top().fillX(); } - addLabel(dialogTextContent.getContent(), ApplicationFontManager.getInstance().getFont(ApplicationFontManager.APPLICATION_DEFAULT_FONT_REGULAR)).center().expand().top().fillX(); } protected Cell<Label> addLabel(String text, BitmapFont font) { -- GitLab