Improve logic for which quest screen gets opened

This commit is contained in:
drdev
2014-07-13 02:37:06 +00:00
parent c80483bf1e
commit f13cec787b
4 changed files with 34 additions and 9 deletions

View File

@@ -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() {

View File

@@ -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) {

View File

@@ -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
}
});
}

View File

@@ -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
}
}
}
}
});