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
zcmZ`(eKga182@@3HnQX@(h<p3OU$S>WOIp0%qCHn8XI<L%R9H4(YlO#>XeqS3fWZh
zE^k|LRkU@f6rmTHG|8w$-d6YL{&)Yl=Q+>wInVQ)&-py(`QyVQ`FZKXP2m6leWJGq
z8A6Md)PX_uz`G6>1e#HVeFOk%&mxwoT2QZ+K=yJ6RXt`Opk`x)H+dfbzgq*q;R3J-
zjX2`~B-sNnaRdO|B>>hQ6SM}nKnqy-UM~;uV<n33l;=Sc-DBP%2@rb!n|q`&yCJy`
zL=Qq>@IB?lHkO&EQI{L0z9~hV(wN{U7+9rCB$3n!SRTm|sYA%%Mvspp4b#<~+)GQw
z4Djl@0VKS}YOO8!0Hi+g!ePx!`TeNT!}&9VDaVhCoo8(31Oq)LT{*?FyvD&a=cR(_
z6T?LrU7xZ2SwoR*AOU(n-G~#4*YnlL=X9p)e{PstHg7NwL}mH;lsHWC>NUbKFAF8u
zzDoZ)h-FEr4y$N^-8?;5`{izg@W^9IDxZoU=^dac|Cs16f8U4z#Z3iQMUN2sg!)5v
zl}{-p4ZMu6KRD4bZr58JJ3Eh(il#+tSACWpkhZ3DxqZK#KDEQ5G?6jIddVnJ0S|E6
zJ)<}0RRsJ}&1HUsV%XedCS}s(r*rt&_uJWDd%v|8c%6>^NNy1!JnOFWbYXbS{hyw)
zNm@Ca@;|@b*b?NYbXmB#W!fzgw9Yb&*$X(o!i2MWghukuVUk~JzD4`%l6<Zq9uSlZ
zcOMzbmd@OGZFhGR(eZZVnGI!QVGBXkG`%=Aoa{<{&?1z73abm+P#f|+NK=_5=U1pV
z-|7o~h}*YS+ZxaCFv}KetF9wWa>VQ;!6#l6Y3SAlN_f3m`yf;NwDLu^f>~+OS7e$d
zMrPOFJh@~TBCe&9pZ18ZfgMa+=s`xXFS|222ddsjPOVY7pmofwSW?&k!Z9PJeb{Hr
z)$&T4CzcHfyTU*KC%P?greajy8$1hpa@tas`lSY0o=Y9eRfMq<Qln{R_$Jfb_>sw-
zSFPf{T4d9dFyT238_KvUw4{OX;RG%}*?Gso&WcG%bspAgZ}M&<F4^Zy+g#&d`d4oH
zyXPOdr<^afr14RTp1|{1b)f>K?Vl`(cS07G_^PS-lKO`X_Aqun5fzi36x<<>wR@~m
zn8|-VoUQF*VVM+FA1Q1_AY(7ezifS|l@iihD0%CPp1jSJn$wLQ0!}@H61x>T$8`qo
zvwpecwP?6w$rQue)Ebbxt@~xw9K5t4Or13JmY*fXp^7dF_TmuIUb9LmqPZ+@eQ->J
z`6~6ktk0T5sTFk`4m#}S?GPEirrD|kH9by=msP?K?n=xYQ4He+-QulqWxh-NJys=m
z%e>xMWtV|W=i`Bj3q5LrvF}M979n!HC}^hiM#cS^m_;r+b>s>16UT0m(6CnYeZp~V
z)VbsFk0$=&X5Z_yy`ZQb($pGY9*TW6^(GJdiclxPw@NOV&)SeCM)-KmIOD!0>|Vpi
zk%RL$4TlW8O)<@mZ|2ADsECCL(T}?>xHsmok@Pkr*hu@yAK6$fx#G&PvhH00qMF*H
z)mNL>op)3a52X<1UyN69=Un8`r<u=X-A$bwpO2fX>oCSe^7Gik%cs0DX{e;AWk4|<
zf9+rtUhk0R^~TWhvRLIs7RT|J&n=mDYixHS6+!zM!tMntw_O@|qyib!U3gwO-&eai
zR4<O<+s{PWy%HU&UcfU(4VL)hff30QT?xbN{#&ZF5Pk=Iwm@oi=Aa@0Zd`votvpn0
zY>mn-CCP*v7%!?Gx0YdE7mX70JFOXi4+v3FtUb@#{97BGFIQ~~)85YdtxSLQ9PQAC
zruNW{o7|pTa{~IO=k$*8m+OwN!}^8k=4Y%o&rWPRG3y$cz9@h^r!glT#75v%+mGlp
zLGHIX(K9%aMopySBI4-~00(<C#ukmXb#MwqJK^jxIE(|z9*wiN=N}aC{zEv*qA?=V
z{-5wp+sX+dn5-yJSdob-)Ob1|&{*O0jl`qWC_0%=rKQD5=_?iuh@O5PRqjVJ{{hSl
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