diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java index 4f2098c24b8..0503550b591 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java @@ -79,7 +79,7 @@ public enum CSubmenuGauntletQuick implements ICDoc { if (view.getBoxQuestDecks().isSelected()) { allowedDeckTypes.add(DeckType.QUEST_OPPONENT_DECK); } if (view.getBoxPreconDecks().isSelected()) { allowedDeckTypes.add(DeckType.PRECONSTRUCTED_DECK); } - final GauntletData gd = GauntletUtil.createQuickGauntlet(view.getLstDecks().getPlayer().getDeck(), view.getSliOpponents().getValue(), allowedDeckTypes); + final GauntletData gd = GauntletUtil.createQuickGauntlet(view.getLstDecks().getPlayer().getDeck(), view.getSliOpponents().getValue(), allowedDeckTypes, null); final List starter = new ArrayList(); final RegisteredPlayer human = new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()); diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 85e2ec895d0..45bfa19b516 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -971,48 +971,58 @@ public class FDeckChooser extends FScreen { @Override public void run(final Integer numOpponents) { if (numOpponents == null) { return; } - List deckTypes=null; - if(FModel.isdeckGenMatrixLoaded()) { - deckTypes=Arrays.asList(new DeckType[] { - DeckType.CUSTOM_DECK, - DeckType.PRECONSTRUCTED_DECK, - DeckType.QUEST_OPPONENT_DECK, - DeckType.COLOR_DECK, - DeckType.STANDARD_COLOR_DECK, - DeckType.STANDARD_CARDGEN_DECK, - DeckType.MODERN_COLOR_DECK, - DeckType.MODERN_CARDGEN_DECK, - DeckType.THEME_DECK - }); - }else{ - deckTypes=Arrays.asList(new DeckType[] { - DeckType.CUSTOM_DECK, - DeckType.PRECONSTRUCTED_DECK, - DeckType.QUEST_OPPONENT_DECK, - DeckType.COLOR_DECK, - DeckType.STANDARD_COLOR_DECK, - DeckType.MODERN_COLOR_DECK, - DeckType.THEME_DECK - }); + List deckTypes = Arrays.asList( + DeckType.CUSTOM_DECK, + DeckType.PRECONSTRUCTED_DECK, + DeckType.QUEST_OPPONENT_DECK, + DeckType.COLOR_DECK, + DeckType.STANDARD_COLOR_DECK, + DeckType.STANDARD_CARDGEN_DECK, + DeckType.MODERN_COLOR_DECK, + DeckType.MODERN_CARDGEN_DECK, + DeckType.THEME_DECK, + DeckType.NET_DECK + ); + if (!FModel.isdeckGenMatrixLoaded()) { + deckTypes.remove(DeckType.STANDARD_CARDGEN_DECK); + deckTypes.remove(DeckType.MODERN_CARDGEN_DECK); } + ListChooser chooser = new ListChooser( - "Choose allowed deck types for opponents", 0, 7, deckTypes, null, new Callback>() { + "Choose allowed deck types for opponents", 0, deckTypes.size(), deckTypes, null, new Callback>() { @Override public void run(final List allowedDeckTypes) { if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) { return; } - LoadingOverlay.show("Loading new game...", new Runnable() { + FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks @Override public void run() { - GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes); - FModel.setGauntletData(gauntlet); + final NetDeckCategory netCat; + if (allowedDeckTypes.contains(DeckType.NET_DECK)) { + netCat = NetDeckCategory.selectAndLoad(GameType.Constructed); + } else { + netCat = null; + } - List players = new ArrayList(); - RegisteredPlayer humanPlayer = new RegisteredPlayer(userDeck).setPlayer(GamePlayerUtil.getGuiPlayer()); - players.add(humanPlayer); - players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer())); + FThreads.invokeInEdtLater(new Runnable() { + @Override + public void run() { + LoadingOverlay.show("Loading new game...", new Runnable() { + @Override + public void run() { + GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, netCat); + FModel.setGauntletData(gauntlet); - gauntlet.startRound(players, humanPlayer); + List players = new ArrayList(); + RegisteredPlayer humanPlayer = new RegisteredPlayer(userDeck).setPlayer(GamePlayerUtil.getGuiPlayer()); + players.add(humanPlayer); + players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer())); + + gauntlet.startRound(players, humanPlayer); + } + }); + } + }); } }); } diff --git a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java index c8685a347f2..ec53b6184ca 100644 --- a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java +++ b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java @@ -102,7 +102,7 @@ public class NewGauntletScreen extends LaunchScreen { public void run(Deck userDeck) { if (userDeck == null) { return; } - GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes); + GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, null); launchGauntlet(gauntlet); } }); diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java index 801e5cdc6d9..f648c0badf2 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java @@ -1,18 +1,16 @@ package forge.gauntlet; import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import forge.deck.Deck; import forge.deck.DeckType; import forge.deck.DeckgenUtil; +import forge.deck.NetDeckCategory; import forge.model.FModel; public class GauntletUtil { - public static GauntletData createQuickGauntlet(final Deck userDeck, final int numOpponents, final List allowedDeckTypes) { + public static GauntletData createQuickGauntlet(final Deck userDeck, final int numOpponents, final List allowedDeckTypes, NetDeckCategory netDecks) { GauntletData gauntlet = new GauntletData(); setDefaultGauntletName(gauntlet, GauntletIO.PREFIX_QUICK); FModel.setGauntletData(gauntlet); @@ -22,6 +20,8 @@ public class GauntletUtil { final List eventNames = new ArrayList(); final List decks = new ArrayList(); + final Object[] netDeckNames = netDecks != null ? netDecks.getItemNames().toArray() : null; + for (int i = 0; i < numOpponents; i++) { int randType = (int)Math.floor(Math.random() * allowedDeckTypes.size()); switch (allowedDeckTypes.get(randType)) { @@ -57,6 +57,11 @@ public class GauntletUtil { deck = DeckgenUtil.getRandomThemeDeck(); eventNames.add(deck.getName()); break; + case NET_DECK: + int deckIndex = (int)Math.floor(Math.random() * netDeckNames.length); + deck = netDecks.get((String) netDeckNames[deckIndex]); + eventNames.add(deck.getName()); + break; default: continue; }