Improved thread handling for constructed mode game start.

This commit is contained in:
Doublestrike
2012-03-07 08:34:20 +00:00
parent a165bae762
commit 5abb75145f

View File

@@ -18,8 +18,8 @@ import java.util.Random;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel; import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout; import javax.swing.SwingWorker;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@@ -37,9 +37,6 @@ import forge.game.GameNew;
import forge.gui.OverlayUtils; import forge.gui.OverlayUtils;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOverlay;
import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -340,19 +337,34 @@ public enum CSubmenuConstructed implements ICSubmenu {
/** @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */ /** @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */
private void startGame() { private void startGame() {
OverlayUtils.startGameOverlay(); SwingUtilities.invokeLater(new Runnable() {
OverlayUtils.showOverlay(); @Override
public void run() {
OverlayUtils.startGameOverlay();
OverlayUtils.showOverlay();
}
});
Constant.Runtime.HUMAN_DECK[0] = final SwingWorker<Object, Void> worker = new SwingWorker<Object, Void>() {
generateDeck(VSubmenuConstructed.SINGLETON_INSTANCE.getLstHumanDecks(), PlayerType.HUMAN); @Override
Constant.Runtime.COMPUTER_DECK[0] = public Object doInBackground() {
generateDeck(VSubmenuConstructed.SINGLETON_INSTANCE.getLstAIDecks(), PlayerType.COMPUTER); Constant.Runtime.HUMAN_DECK[0] =
generateDeck(VSubmenuConstructed.SINGLETON_INSTANCE.getLstHumanDecks(), PlayerType.HUMAN);
Constant.Runtime.COMPUTER_DECK[0] =
generateDeck(VSubmenuConstructed.SINGLETON_INSTANCE.getLstAIDecks(), PlayerType.COMPUTER);
if (Constant.Runtime.HUMAN_DECK[0] != null && Constant.Runtime.COMPUTER_DECK[0] != null) { if (Constant.Runtime.HUMAN_DECK[0] != null && Constant.Runtime.COMPUTER_DECK[0] != null) {
GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]); GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]);
} }
return null;
}
OverlayUtils.hideOverlay(); @Override
public void done() {
OverlayUtils.hideOverlay();
}
};
worker.execute();
} }
/** Generates deck from current list selection(s). */ /** Generates deck from current list selection(s). */