mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Improve logic for which quest screen gets opened
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user