From ccc0ac5f78357724fc521c7d584903c0b3a632c0 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 3 Oct 2020 14:54:23 +0800 Subject: [PATCH] Fix Quest Tournament loading on Mobile :) --- .../screens/quest/QuestTournamentsScreen.java | 13 +++++- .../main/java/forge/limited/BoosterDraft.java | 6 ++- .../quest/QuestTournamentController.java | 40 +++++++++++-------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestTournamentsScreen.java b/forge-gui-mobile/src/forge/screens/quest/QuestTournamentsScreen.java index 7d8e2507154..b7a4f02e5fc 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestTournamentsScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestTournamentsScreen.java @@ -26,6 +26,7 @@ import forge.quest.QuestEventDraft; import forge.quest.QuestTournamentController; import forge.quest.QuestDraftUtils.Mode; import forge.quest.data.QuestEventDraftContainer; +import forge.screens.LoadingOverlay; import forge.screens.limited.DraftingProcessScreen; import forge.toolbox.FButton; import forge.toolbox.FContainer; @@ -228,7 +229,17 @@ public class QuestTournamentsScreen extends QuestLaunchScreen implements IQuestT @Override public void startDraft(BoosterDraft draft) { - Forge.openScreen(new DraftingProcessScreen(draft, EditorType.QuestDraft, controller)); + FThreads.invokeInEdtLater(new Runnable() { + @Override + public void run() { + LoadingOverlay.show("Loading Quest Tournament", new Runnable() { + @Override + public void run() { + Forge.openScreen(new DraftingProcessScreen(draft, EditorType.QuestDraft, controller)); + } + }); + } + }); } private Deck getDeck() { diff --git a/forge-gui/src/main/java/forge/limited/BoosterDraft.java b/forge-gui/src/main/java/forge/limited/BoosterDraft.java index c54ae9d13c9..a3ffdf73ebe 100644 --- a/forge-gui/src/main/java/forge/limited/BoosterDraft.java +++ b/forge-gui/src/main/java/forge/limited/BoosterDraft.java @@ -225,7 +225,11 @@ public class BoosterDraft implements IBoosterDraft { final BoosterDraft draft = new BoosterDraft(draftType); for (String booster : boosters) { - draft.product.add(block.getBooster(booster)); + try { + draft.product.add(block.getBooster(booster)); + } catch (Exception ex) { + System.err.println("Booster Draft Error: "+ex.getMessage()); + } } IBoosterDraft.LAND_SET_CODE[0] = block.getLandSet(); diff --git a/forge-gui/src/main/java/forge/quest/QuestTournamentController.java b/forge-gui/src/main/java/forge/quest/QuestTournamentController.java index 57f1616a122..9357e4a2c58 100644 --- a/forge-gui/src/main/java/forge/quest/QuestTournamentController.java +++ b/forge-gui/src/main/java/forge/quest/QuestTournamentController.java @@ -24,6 +24,7 @@ import forge.tournament.system.TournamentBracket; import forge.tournament.system.TournamentPairing; import forge.tournament.system.TournamentPlayer; import forge.util.TextUtil; +import forge.util.ThreadUtil; import forge.util.gui.SGuiChoose; import forge.util.gui.SOptionPane; import forge.util.storage.IStorage; @@ -381,29 +382,34 @@ public class QuestTournamentController { } public void startDraft() { - if (drafting) { - SOptionPane.showErrorDialog(localizer.getMessage("lblCurrentlyInDraft")); - return; - } + ThreadUtil.invokeInGameThread(new Runnable() { + @Override + public void run() { + if (drafting) { + SOptionPane.showErrorDialog(localizer.getMessage("lblCurrentlyInDraft")); + return; + } - final QuestEventDraft draftEvent = QuestUtil.getDraftEvent(); + final QuestEventDraft draftEvent = QuestUtil.getDraftEvent(); - final long creditsAvailable = FModel.getQuest().getAssets().getCredits(); - if (draftEvent.canEnter()) { - SOptionPane.showMessageDialog(localizer.getMessage("lblYouNeed") + QuestUtil.formatCredits(draftEvent.getEntryFee() - creditsAvailable) + " " + localizer.getMessage("lblMoreCredits"), localizer.getMessage("lblNotEnoughCredits"), SOptionPane.WARNING_ICON); - return; - } + final long creditsAvailable = FModel.getQuest().getAssets().getCredits(); + if (draftEvent.canEnter()) { + SOptionPane.showMessageDialog(localizer.getMessage("lblYouNeed") + QuestUtil.formatCredits(draftEvent.getEntryFee() - creditsAvailable) + " " + localizer.getMessage("lblMoreCredits"), localizer.getMessage("lblNotEnoughCredits"), SOptionPane.WARNING_ICON); + return; + } - final boolean okayToEnter = SOptionPane.showOptionDialog(localizer.getMessage("lblTournamentCosts") + QuestUtil.formatCredits(draftEvent.getEntryFee()) + localizer.getMessage("lblSureEnterTournament"), localizer.getMessage("lblEnterDraftTournament"), FSkinProp.ICO_QUEST_GOLD, ImmutableList.of(localizer.getMessage("lblYes"), localizer.getMessage("lblNo")), 1) == 0; + final boolean okayToEnter = SOptionPane.showOptionDialog(localizer.getMessage("lblTournamentCosts") + QuestUtil.formatCredits(draftEvent.getEntryFee()) + localizer.getMessage("lblSureEnterTournament"), localizer.getMessage("lblEnterDraftTournament"), FSkinProp.ICO_QUEST_GOLD, ImmutableList.of(localizer.getMessage("lblYes"), localizer.getMessage("lblNo")), 1) == 0; - if (!okayToEnter) { - return; - } + if (!okayToEnter) { + return; + } - drafting = true; + drafting = true; - final BoosterDraft draft = draftEvent.enter(); - view.startDraft(draft); + final BoosterDraft draft = draftEvent.enter(); + view.startDraft(draft); + } + }); } public boolean cancelDraft() {