From f13cec787b39417b1b64d675335048c356da60b1 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 13 Jul 2014 02:37:06 +0000 Subject: [PATCH] Improve logic for which quest screen gets opened --- .../src/forge/screens/home/HomeScreen.java | 3 +- .../forge/screens/quest/LoadQuestScreen.java | 3 +- .../forge/screens/quest/NewQuestScreen.java | 3 +- .../src/forge/screens/quest/QuestMenu.java | 34 +++++++++++++++---- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/home/HomeScreen.java b/forge-gui-mobile/src/forge/screens/home/HomeScreen.java index c6cc0253111..3ba78a5bcb9 100644 --- a/forge-gui-mobile/src/forge/screens/home/HomeScreen.java +++ b/forge-gui-mobile/src/forge/screens/home/HomeScreen.java @@ -10,6 +10,7 @@ import forge.screens.constructed.ConstructedScreen; import forge.screens.draft.DraftScreen; import forge.screens.gauntlet.GauntletScreen; import forge.screens.quest.QuestMenu; +import forge.screens.quest.QuestMenu.LaunchReason; import forge.screens.sealed.SealedScreen; import forge.screens.settings.SettingsScreen; import forge.toolbox.FButton; @@ -46,7 +47,7 @@ public class HomeScreen extends FScreen { addButton("Quest Mode", new FEventHandler() { @Override public void handleEvent(FEvent e) { - QuestMenu.launchQuestMode(false); + QuestMenu.launchQuestMode(LaunchReason.StartQuestMode); } }, true); addButton("Gauntlets", new FEventHandler() { diff --git a/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java b/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java index 0d7a53f7a84..61ac9c3241f 100644 --- a/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java @@ -28,6 +28,7 @@ import forge.quest.data.QuestData; import forge.quest.data.QuestPreferences.QPref; import forge.quest.io.QuestDataIO; import forge.screens.FScreen; +import forge.screens.quest.QuestMenu.LaunchReason; import forge.screens.settings.SettingsScreen; import forge.toolbox.FButton; import forge.toolbox.FEvent; @@ -167,7 +168,7 @@ public class LoadQuestScreen extends FScreen { FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, lstQuests.getSelectedQuest().getName() + ".dat"); FModel.getQuestPreferences().save(); - QuestMenu.launchQuestMode(true); + QuestMenu.launchQuestMode(LaunchReason.LoadQuest); } private void renameQuest(final QuestData quest) { diff --git a/forge-gui-mobile/src/forge/screens/quest/NewQuestScreen.java b/forge-gui-mobile/src/forge/screens/quest/NewQuestScreen.java index 3121b6d0d26..e7b9ea2e67c 100644 --- a/forge-gui-mobile/src/forge/screens/quest/NewQuestScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/NewQuestScreen.java @@ -35,6 +35,7 @@ import forge.quest.data.GameFormatQuest; import forge.quest.data.QuestPreferences.QPref; import forge.screens.FScreen; import forge.screens.LoadingOverlay; +import forge.screens.quest.QuestMenu.LaunchReason; import forge.toolbox.FCheckBox; import forge.toolbox.FComboBox; import forge.toolbox.FDisplayObject; @@ -536,7 +537,7 @@ public class NewQuestScreen extends FScreen { FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, questName + ".dat"); FModel.getQuestPreferences().save(); - QuestMenu.launchQuestMode(true); //launch quest mode for new quest + QuestMenu.launchQuestMode(LaunchReason.NewQuest); //launch quest mode for new quest } }); } diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java b/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java index 71026d8fde7..cc75c41758c 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java @@ -118,7 +118,13 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats { private QuestMenu() { } - public static void launchQuestMode(final boolean fromQuestChange) { + public enum LaunchReason { + StartQuestMode, + LoadQuest, + NewQuest + } + + public static void launchQuestMode(final LaunchReason reason) { //attempt to load current quest final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR); final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST); @@ -128,15 +134,31 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats { @Override public void run() { FModel.getQuest().load(QuestDataIO.loadData(data)); - if (fromQuestChange) { + if (reason == LaunchReason.StartQuestMode) { + if (QuestUtil.getCurrentDeck() == null) { + Forge.openScreen(decksScreen); //if quest doesn't have a deck specified, open decks screen by default + } + else { + Forge.openScreen(duelsScreen); //TODO: Consider opening most recent quest view + } + } + else { duelsScreen.update(); challengesScreen.update(); tournamentsScreen.update(); decksScreen.refreshDecks(); - Forge.back(); - } - else { - Forge.openScreen(duelsScreen); //TODO: Consider opening most recent quest view + if (reason == LaunchReason.LoadQuest) { + Forge.back(); + } + else { + Forge.back(); + if (Forge.getCurrentScreen() instanceof LoadQuestScreen) { + Forge.back(); //remove LoadQuestScreen from screen stack + } + if (Forge.getCurrentScreen() != decksScreen) { + Forge.openScreen(decksScreen); //open deck screen for new quest + } + } } } });