From 6a5b17cf9c9d6a34d242b0548f396679a26941d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz>
Date: Thu, 21 Jul 2016 13:58:58 +0200
Subject: [PATCH] #341 Small code refactor

---
 .../cz/nic/tablexia/TablexiaApplication.java  | 99 ++++++++++---------
 .../src/cz/nic/tablexia/TablexiaSettings.java |  2 +-
 .../menu/game/GameMenuDefinition.java         |  2 -
 .../tablexia/menu/game/GameMenuItemGroup.java |  4 +-
 .../screen/AbstractTablexiaScreen.java        |  2 +-
 5 files changed, 56 insertions(+), 53 deletions(-)

diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java
index d1fcc66fc..080318baf 100644
--- a/core/src/cz/nic/tablexia/TablexiaApplication.java
+++ b/core/src/cz/nic/tablexia/TablexiaApplication.java
@@ -334,21 +334,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
     }
 
 
-//////////////////////////// SCREEN QUIT DIALOG
-
-    private void showQuitConfirmDialog(final Runnable newScreenAction) {
-        TablexiaComponentDialogFactory.getInstance().createWarningYesNoDialog(
-                ApplicationTextManager.getInstance().getText(screen.prepareQuitConfirmDialogText()),
-                new ClickListener() {
-                    @Override
-                    public void clicked(InputEvent event, float x, float y) {
-                        super.clicked(event, x, y);
-                        newScreenAction.run();
-                    }
-                }, true).show(TablexiaComponentDialogFactory.WARNING_DIALOG_WIDTH, TablexiaComponentDialogFactory.WARNING_DIALOG_HEIGHT);
-        ApplicationBus.getInstance().post(new MenuControlEvent(MainMenu.class, AbstractMenu.MenuAction.OPEN, true)).asynchronously();
-    }
-
+//////////////////////////// SCREEN LOADER
 
     private void prepareScreenLoaderMouse() {
         screenLoaderMouse = new AnimatedImage(
@@ -578,7 +564,7 @@ public abstract class TablexiaApplication implements ApplicationListener {
      */
     public void setScreenIfIsDifferent(AbstractTablexiaScreen<?> newScreen, ScreenTransaction screenTransaction) {
         if (newScreen != null) {
-            if (getScreen() == null || getScreen().getClass() != newScreen.getClass()) {
+            if (getActualScreen() == null || getActualScreen().getClass() != newScreen.getClass()) {
                 setScreen(newScreen, screenTransaction);
             }
         }
@@ -656,40 +642,29 @@ public abstract class TablexiaApplication implements ApplicationListener {
     }
 
     private void performNewScreenAction(final AbstractTablexiaScreen<?> newScreen, final Runnable newScreenAction) {
-        if(newScreen.isSoundMandatory() && TablexiaSettings.getInstance().isSoundMuted()) {
-            showSoundMutedDialog(newScreen, newScreenAction);
-        }
-        else if(screen.hasQuitConfirmDialog()){
-            showQuitConfirmDialog(newScreenAction);
-        }
-        else {
-            newScreenAction.run();
-        }
-    }
-
-    private void showSoundMutedDialog(final AbstractTablexiaScreen<?> newScreen, final Runnable newScreenAction) {
-        TablexiaComponentDialogFactory.getInstance().createWarningYesNoDialog(
-            ApplicationTextManager.getInstance().getText(newScreen.prepareSoundMutedQuestion()),
-            new ClickListener() {
-                @Override
-                public void clicked(InputEvent event, float x, float y) {
-                    TablexiaSettings.getInstance().toggleSoundMute();
+        final Runnable soundConfirmationCheck = new Runnable() {
+            @Override
+            public void run() {
+                if(newScreen.isSoundMandatory() && TablexiaSettings.getInstance().isSoundMuted()) {
+                    showSoundMutedDialog(newScreen.prepareSoundMutedQuestion(), newScreenAction);
+                } else {
+                    newScreenAction.run();
+                }
+            }
+        };
 
-                    if(screen.hasQuitConfirmDialog()) showQuitConfirmDialog(newScreenAction);
-                    else newScreenAction.run();
+        Runnable quitConfirmationCheck = new Runnable() {
+            @Override
+            public void run() {
+                if(screen.hasQuitConfirmDialog()){
+                    showQuitConfirmDialog(screen.prepareQuitConfirmDialogText(), soundConfirmationCheck);
+                } else {
+                    soundConfirmationCheck.run();
                 }
-            },
-            true
-        ).show(TablexiaComponentDialogFactory.WARNING_DIALOG_WIDTH, TablexiaComponentDialogFactory.WARNING_DIALOG_HEIGHT);
-    }
+            }
+        };
 
-    /**
-     * Return current screen
-     *
-     * @return current screen
-     */
-    public AbstractTablexiaScreen<?> getScreen() {
-        return screen;
+        quitConfirmationCheck.run();
     }
 
     @SuppressWarnings("unchecked")
@@ -763,6 +738,36 @@ public abstract class TablexiaApplication implements ApplicationListener {
     }
 
 
+//////////////////////////// SCREEN SWITCH DIALOGS
+
+    private void showSoundMutedDialog(final String dialogText, final Runnable newScreenAction) {
+        TablexiaComponentDialogFactory.getInstance().createWarningYesNoDialog(
+                ApplicationTextManager.getInstance().getText(dialogText),
+                new ClickListener() {
+                    @Override
+                    public void clicked(InputEvent event, float x, float y) {
+                        TablexiaSettings.getInstance().toggleSoundMute();
+                        newScreenAction.run();
+                    }
+                },
+                true
+        ).show(TablexiaComponentDialogFactory.WARNING_DIALOG_WIDTH, TablexiaComponentDialogFactory.WARNING_DIALOG_HEIGHT);
+    }
+
+    private void showQuitConfirmDialog(final String dialogText, final Runnable nextAction) {
+        TablexiaComponentDialogFactory.getInstance().createWarningYesNoDialog(
+                ApplicationTextManager.getInstance().getText(dialogText),
+                new ClickListener() {
+                    @Override
+                    public void clicked(InputEvent event, float x, float y) {
+                        super.clicked(event, x, y);
+                        nextAction.run();
+                    }
+                }, true).show(TablexiaComponentDialogFactory.WARNING_DIALOG_WIDTH, TablexiaComponentDialogFactory.WARNING_DIALOG_HEIGHT);
+        ApplicationBus.getInstance().post(new MenuControlEvent(MainMenu.class, AbstractMenu.MenuAction.OPEN, true)).asynchronously();
+    }
+
+
 //////////////////////////// SCREEN TRANSACTIONS
 
     public enum ScreenTransaction {
diff --git a/core/src/cz/nic/tablexia/TablexiaSettings.java b/core/src/cz/nic/tablexia/TablexiaSettings.java
index 688523201..890a56768 100644
--- a/core/src/cz/nic/tablexia/TablexiaSettings.java
+++ b/core/src/cz/nic/tablexia/TablexiaSettings.java
@@ -255,7 +255,7 @@ public class TablexiaSettings {
     public boolean isSoundMuted() { return soundMuted; }
 
     public void toggleSoundMute() {
-        this.soundMuted = !soundMuted;
+        this.soundMuted = !this.soundMuted;
         ApplicationBus.getInstance().publishAsync(new SoundMuteEvent(soundMuted));
     }
 
diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java
index 8e55f1590..50a6923e2 100644
--- a/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java
+++ b/core/src/cz/nic/tablexia/menu/game/GameMenuDefinition.java
@@ -82,8 +82,6 @@ public enum GameMenuDefinition implements ApplicationBus.ApplicationEvent, IMenu
         }
     }
 
-
-
     public static GameMenuDefinition getGameMenuDefinitionForGameDefinition(GameDefinition gameDefinition) {
         for (GameMenuDefinition gameMenuDefinition : GameMenuDefinition.values()) {
             if (gameDefinition == gameMenuDefinition.gameDefinition) {
diff --git a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
index 4797713ea..14d2dcf00 100644
--- a/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
+++ b/core/src/cz/nic/tablexia/menu/game/GameMenuItemGroup.java
@@ -57,8 +57,8 @@ public class GameMenuItemGroup extends Container<Table> {
     private Class<? extends AbstractTablexiaGame> abstractTablexiaGameClass;
     private GameMenuScreen.GameMenuPageDefinition gameMenuPageDefinition;
 
-    public GameMenuItemGroup(final IMenuItem menuItem, float width) {
-        this.abstractTablexiaGameClass = ((GameMenuDefinition)menuItem).getGameDefinition().getScreenClass();
+    public GameMenuItemGroup(IMenuItem menuItem, float width) {
+        this.abstractTablexiaGameClass = ((GameMenuDefinition) menuItem).getGameDefinition().getScreenClass();
         this.gameMenuPageDefinition = GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(GameDefinition.getGameDefinitionForClass(abstractTablexiaGameClass));
 
         padLeft(LEFT_PADDING);
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index 66d1c0f73..867faca89 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -158,7 +158,7 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
 
         @Handler
         public void handleSoundMuteEvent(TablexiaSettings.SoundMuteEvent soundMuteEvent) {
-            if(isPlaying()) updateVolume();
+            updateVolume();
         }
     }
 
-- 
GitLab