From 3f0ccbd1e1b2f279bd0ac7cc96a3165e6a8cd2c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Drahom=C3=ADr=20Karch=C5=88=C3=A1k?=
 <drahomir.karchnak@nic.cz>
Date: Wed, 17 Aug 2016 12:47:38 +0200
Subject: [PATCH] #447 Fixed a glitch, which caused applications screen to
 black out after changing screen and pressing back button right after.

---
 core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java   | 1 -
 .../tablexia/game/games/kidnapping/KidnappingGame.java    | 8 --------
 .../cz/nic/tablexia/screen/AbstractTablexiaScreen.java    | 8 +++++++-
 3 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java b/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java
index dc33a9488..c29a90f1a 100644
--- a/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java
+++ b/core/src/cz/nic/tablexia/game/AbstractTablexiaGame.java
@@ -72,7 +72,6 @@ import cz.nic.tablexia.util.ui.button.TablexiaButton;
 import cz.nic.tablexia.util.ui.dialog.TablexiaComponentDialog;
 import cz.nic.tablexia.util.ui.dialog.TablexiaComponentDialogFactory;
 import cz.nic.tablexia.util.ui.dialog.components.AdaptiveSizeDialogComponent;
-import cz.nic.tablexia.util.ui.dialog.components.BackButtonHideComponent;
 import cz.nic.tablexia.util.ui.dialog.components.CenterPositionDialogComponent;
 import cz.nic.tablexia.util.ui.dialog.components.DimmerDialogComponent;
 import cz.nic.tablexia.util.ui.dialog.components.FixedSpaceContentDialogComponent;
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 92e35cb8e..e23666763 100644
--- a/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java
+++ b/core/src/cz/nic/tablexia/game/games/kidnapping/KidnappingGame.java
@@ -88,7 +88,6 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 	private Group ruleMessage;
 	private boolean ruleMessageShown = false;
 	private StandardTablexiaButton ruleButton;
-    private boolean isBackButtonAllowed;
 
     private DirectionSounds.SoundPack actualSoundPack;
 
@@ -105,7 +104,6 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 
     @Override
     protected void gameLoaded(final java.util.Map<String, String> gameState) {
-        isBackButtonAllowed = false;
 		getStage().addActor(map = Map.MapFactory.createInstance(this, gfxLibrary, getData()));
 		map.setMapScale(MAP_SCALE);
 
@@ -212,11 +210,6 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 		ruleMessageShown = true;
 	}
 
-    @Override
-    public void backButtonPressed() {
-        if(isBackButtonAllowed) super.backButtonPressed();
-    }
-
     private void playRuleSound(float delay) {
         Timer.schedule(new Timer.Task(){
             @Override
@@ -248,7 +241,6 @@ public class KidnappingGame extends AbstractTablexiaGame<GameState> {
 						}
 					})));
 		}
-        isBackButtonAllowed = true;
 	}
 
     @Override
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index 867faca89..87027a4d8 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -198,6 +198,8 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
     private boolean                                       loadAsync;
     private TablexiaAbstractFileManager.AssetsStorageType storageType;
 
+    private boolean backButtonAllowed = false;
+
     private Map<String, TablexiaMusic> notDisposedMusics;
 
     private static class TextManager extends TablexiaDataManager<I18NBundle> {
@@ -583,6 +585,8 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 
     private final void performScreenLoaded() {
         Log.info(getClass(), "[ ------- Screen Loaded ------- ]");
+        backButtonAllowed = false;
+
         // reset screen state after loading screen with state
         TablexiaStorage.getInstance().resetScreenState(this);
 
@@ -602,6 +606,8 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
         screenVisible(screenState);
         performScreenResumed();
         playIntroMusic();
+
+        backButtonAllowed = true;
     }
 
     private final void performScreenResized(int width, int height) {
@@ -772,7 +778,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 	public void backButtonPressed(TablexiaApplication.BackButtonPressed event) {
         if (event.shouldProcess(TablexiaApplication.BackButtonPressed.SCREEN_PRIORITY)) {
 			event.setProcessWithPriority(TablexiaApplication.BackButtonPressed.SCREEN_PRIORITY);
-            if (loadingComplete && getClass().equals(TablexiaApplication.getActualScreenClass())) {
+            if (loadingComplete && backButtonAllowed && getClass().equals(TablexiaApplication.getActualScreenClass())) {
                 backButtonPressed();
             }
 		}
-- 
GitLab