From d0a6d827e1debe108f64f3553240f5434dfd5edf Mon Sep 17 00:00:00 2001 From: drdev Date: Sat, 25 Apr 2015 14:59:29 +0000 Subject: [PATCH] Support testing commander decks --- .../src/forge/deck/FDeckChooser.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index ffe35af54c8..eda2cf75cd6 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -2,6 +2,7 @@ package forge.deck; import forge.FThreads; import forge.Forge; +import forge.GuiBase; import forge.deck.Deck; import forge.deck.FDeckEditor.EditorType; import forge.deck.io.DeckPreferences; @@ -10,8 +11,10 @@ import forge.game.GameType; import forge.game.player.RegisteredPlayer; import forge.gauntlet.GauntletData; import forge.gauntlet.GauntletUtil; +import forge.interfaces.IGuiGame; import forge.itemmanager.DeckManager; import forge.itemmanager.ItemManagerConfig; +import forge.match.HostedMatch; import forge.model.FModel; import forge.player.GamePlayerUtil; import forge.properties.ForgePreferences; @@ -23,6 +26,7 @@ import forge.quest.QuestUtil; import forge.screens.FScreen; import forge.screens.LoadingOverlay; import forge.screens.home.NewGameMenu.NewGameScreen; +import forge.screens.match.MatchController; import forge.toolbox.FButton; import forge.toolbox.FComboBox; import forge.toolbox.FEvent; @@ -40,7 +44,11 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; public class FDeckChooser extends FScreen { public static final float PADDING = Utils.scale(5); @@ -776,6 +784,12 @@ public class FDeckChooser extends FScreen { final Deck userDeck = deckProxy.getDeck(); if (userDeck == null) { return; } + if (selectedDeckType == DeckType.COMMANDER_DECK) { + //cannot create gauntlet for commander decks, so just start single match + testCommanderDeck(userDeck); + return; + } + GuiChoose.getInteger("How many opponents are you willing to face?", 1, 50, new Callback() { @Override public void run(final Integer numOpponents) { @@ -813,4 +827,35 @@ public class FDeckChooser extends FScreen { } }); } + + private void testCommanderDeck(final Deck userDeck) { + FDeckChooser aiDeckPrompt = new FDeckChooser(GameType.Commander, true, null); + aiDeckPrompt.setHeaderCaption("Select Opponent's Deck"); + aiDeckPrompt.callback = new Callback() { + @Override + public void run(final Deck aiDeck) { + if (aiDeck == null) { return; } + + LoadingOverlay.show("Loading new game...", new Runnable() { + @Override + public void run() { + Set appliedVariants = new HashSet(); + appliedVariants.add(GameType.Commander); + + List players = new ArrayList(); + RegisteredPlayer humanPlayer = new RegisteredPlayer(userDeck).setPlayer(GamePlayerUtil.getGuiPlayer()); + players.add(humanPlayer); + players.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer())); + + final Map guiMap = new HashMap(); + guiMap.put(humanPlayer, MatchController.instance); + + final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch(); + hostedMatch.startMatch(GameType.Constructed, appliedVariants, players, guiMap); + } + }); + } + }; + Forge.openScreen(aiDeckPrompt); + } }