From 24052017e8e3e6a2328f8cab1c77dbf0b46a94b2 Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Fri, 9 Mar 2012 03:45:12 +0000 Subject: [PATCH] Updating threading in draft start game process. --- .../gui/home/sanctioned/CSubmenuDraft.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/forge/gui/home/sanctioned/CSubmenuDraft.java b/src/main/java/forge/gui/home/sanctioned/CSubmenuDraft.java index 87049341014..59986c91854 100644 --- a/src/main/java/forge/gui/home/sanctioned/CSubmenuDraft.java +++ b/src/main/java/forge/gui/home/sanctioned/CSubmenuDraft.java @@ -8,6 +8,7 @@ import java.util.Random; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; import forge.Command; import forge.Constant; @@ -182,21 +183,37 @@ public enum CSubmenuDraft implements ICSubmenu { return; } - OverlayUtils.startGameOverlay(); - OverlayUtils.showOverlay(); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + OverlayUtils.startGameOverlay(); + OverlayUtils.showOverlay(); + } + }); - DeckGroup opponentDecks = Singletons.getModel().getDecks().getDraft().get(human.getName()); + final SwingWorker worker = new SwingWorker() { + @Override + public Object doInBackground() { + DeckGroup opponentDecks = Singletons.getModel().getDecks().getDraft().get(human.getName()); - Constant.Runtime.HUMAN_DECK[0] = human; - Constant.Runtime.COMPUTER_DECK[0] = opponentDecks.getAiDecks().get(aiIndex); //zero is human deck, so it must be +1 + Constant.Runtime.HUMAN_DECK[0] = human; + Constant.Runtime.COMPUTER_DECK[0] = opponentDecks.getAiDecks().get(aiIndex); //zero is human deck, so it must be +1 - if (Constant.Runtime.COMPUTER_DECK[0] == null) { - throw new IllegalStateException("Draft: Computer deck is null!"); - } + if (Constant.Runtime.COMPUTER_DECK[0] == null) { + throw new IllegalStateException("Draft: Computer deck is null!"); + } - Constant.Runtime.setGameType(GameType.Draft); - GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]); - OverlayUtils.hideOverlay(); + Constant.Runtime.setGameType(GameType.Draft); + GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]); + return null; + } + + @Override + public void done() { + OverlayUtils.hideOverlay(); + } + }; + worker.execute(); } /** */