From 0ebe9fb7e66ab6f12a5c3f58076b23b71a21fd78 Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 11 Apr 2014 15:36:35 +0000 Subject: [PATCH] Support actually starting a match again --- .../src/main/java/forge/game/GameRules.java | 4 ++-- .../forge/game/player/RegisteredPlayer.java | 3 ++- .../src/main/java/forge/control/FControl.java | 3 ++- .../home/sanctioned/CSubmenuConstructed.java | 7 +++--- .../src/forge/deck/FDeckChooser.java | 2 +- .../src/forge/screens/LaunchScreen.java | 4 +++- .../constructed/ConstructedScreen.java | 24 +++++++++---------- .../src/forge/screens/match/FControl.java | 2 +- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameRules.java b/forge-game/src/main/java/forge/game/GameRules.java index eb1183140df..93603a826ab 100644 --- a/forge-game/src/main/java/forge/game/GameRules.java +++ b/forge-game/src/main/java/forge/game/GameRules.java @@ -1,7 +1,7 @@ package forge.game; import java.util.EnumSet; -import java.util.List; +import java.util.Set; public class GameRules { private GameType gameType; @@ -66,7 +66,7 @@ public class GameRules { return gamesToWinMatch; } - public void setAppliedVariants(List appliedVariants) { + public void setAppliedVariants(Set appliedVariants) { this.appliedVariants.addAll(appliedVariants); } diff --git a/forge-game/src/main/java/forge/game/player/RegisteredPlayer.java b/forge-game/src/main/java/forge/game/player/RegisteredPlayer.java index a79cb8fb319..0d3e24e4502 100644 --- a/forge-game/src/main/java/forge/game/player/RegisteredPlayer.java +++ b/forge-game/src/main/java/forge/game/player/RegisteredPlayer.java @@ -9,6 +9,7 @@ import forge.item.PaperCard; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Set; public class RegisteredPlayer { @@ -115,7 +116,7 @@ public class RegisteredPlayer { } public static RegisteredPlayer forVariants( - final List appliedVariants, final Deck deck, //General vars + final Set appliedVariants, final Deck deck, //General vars final Iterable schemes, final boolean playerIsArchenemy, //Archenemy specific vars final Iterable planes, final PaperCard vanguardAvatar) { //Planechase and Vanguard diff --git a/forge-gui-desktop/src/main/java/forge/control/FControl.java b/forge-gui-desktop/src/main/java/forge/control/FControl.java index 109fbf1d26a..58dcd4406e1 100644 --- a/forge-gui-desktop/src/main/java/forge/control/FControl.java +++ b/forge-gui-desktop/src/main/java/forge/control/FControl.java @@ -72,6 +72,7 @@ import java.awt.event.*; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Set; /** *

@@ -555,7 +556,7 @@ public enum FControl implements KeyEventDispatcher { startMatch(gameType, null, players); } - public void startMatch(GameType gameType, List appliedVariants, List players) { + public void startMatch(GameType gameType, Set appliedVariants, List players) { boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); for(RegisteredPlayer rp : players) { rp.setRandomFoil(useRandomFoil); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuConstructed.java b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuConstructed.java index 2e852371199..be0526f2592 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuConstructed.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/CSubmenuConstructed.java @@ -32,6 +32,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.Vector; //import forge.gui.home.variant.VSubmenuVanguard; @@ -154,9 +155,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider { view.getBtnStart().addActionListener(new ActionListener() { @Override public void actionPerformed(final ActionEvent arg0) { - final List variantTypes = new ArrayList(4); - variantTypes.addAll(view.getAppliedVariants()); - startGame(variantTypes); + startGame(view.getAppliedVariants()); } }); @@ -184,7 +183,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider { } /** Starts a match with the applied variants. */ - private void startGame(final List variantTypes) { + private void startGame(final Set variantTypes) { if (!view.isEnoughTeams()) { FOptionPane.showMessageDialog("There are not enough teams! Please adjust team allocations."); return; diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index a574903f33e..15c85b07a89 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -63,7 +63,7 @@ public class FDeckChooser extends FScreen { selectedDeckType = defaultDeckType; if (decksComboBox == null) { //initialize components with delayed initialization the first time this is populated - decksComboBox = new FComboBox(); + decksComboBox = new FComboBox(DeckType.values()); restoreSavedState(); decksComboBox.setChangedHandler(new FEventHandler() { @Override diff --git a/forge-gui-mobile/src/forge/screens/LaunchScreen.java b/forge-gui-mobile/src/forge/screens/LaunchScreen.java index 3a774fe3714..4c811c94eb7 100644 --- a/forge-gui-mobile/src/forge/screens/LaunchScreen.java +++ b/forge-gui-mobile/src/forge/screens/LaunchScreen.java @@ -1,7 +1,9 @@ package forge.screens; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import forge.screens.FScreen; import forge.screens.match.FControl; @@ -36,7 +38,7 @@ public abstract class LaunchScreen extends FScreen { protected class LaunchParams { public GameType gameType; public final List players = new ArrayList(); - public final List appliedVariants = new ArrayList(); + public final Set appliedVariants = new HashSet(); } private class StartButton extends FDisplayObject { diff --git a/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java b/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java index 425d1120009..70d865dff21 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java +++ b/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java @@ -220,11 +220,10 @@ public class ConstructedScreen extends LaunchScreen { } } // Is it even possible anymore? I think current implementation assigns decks automatically. - final List variantTypes = new ArrayList(); - variantTypes.addAll(appliedVariants); + launchParams.appliedVariants.addAll(appliedVariants); boolean checkLegality = FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY); - if (checkLegality && !variantTypes.contains(GameType.Commander)) { //Commander deck replaces regular deck and is checked later + if (checkLegality && !appliedVariants.contains(GameType.Commander)) { //Commander deck replaces regular deck and is checked later for (int i = 0; i < getNumPlayers(); i++) { String name = getPlayerName(i); String errMsg = GameType.Constructed.getDecksFormat().getDeckConformanceProblem(getDeckChooser(i).getPlayer().getDeck()); @@ -236,7 +235,6 @@ public class ConstructedScreen extends LaunchScreen { } Lobby lobby = FServer.getLobby(); - List players = new ArrayList(); for (int i = 0; i < getNumPlayers(); i++) { PlayerPanel playerPanel = playerPanels.get(i); String name = getPlayerName(i); @@ -244,13 +242,13 @@ public class ConstructedScreen extends LaunchScreen { getPlayerAvatar(i)) : lobby.getGuiPlayer(); RegisteredPlayer rp = playerPanel.deckChooser.getPlayer(); - if (variantTypes.isEmpty()) { + if (appliedVariants.isEmpty()) { rp.setTeamNumber(getTeam(i)); - players.add(rp.setPlayer(lobbyPlayer)); + launchParams.players.add(rp.setPlayer(lobbyPlayer)); } else { Deck deck = null; - boolean isCommanderMatch = variantTypes.contains(GameType.Commander); + boolean isCommanderMatch = appliedVariants.contains(GameType.Commander); if (isCommanderMatch) { Object selected = playerPanel.commanderDeckList.getSelectedValue(); if (selected instanceof String) { @@ -283,8 +281,8 @@ public class ConstructedScreen extends LaunchScreen { PaperCard vanguardAvatar = null; //Archenemy - if (variantTypes.contains(GameType.ArchenemyRumble) - || (variantTypes.contains(GameType.Archenemy) && playerIsArchenemy)) { + if (appliedVariants.contains(GameType.ArchenemyRumble) + || (appliedVariants.contains(GameType.Archenemy) && playerIsArchenemy)) { Object selected = playerPanel.schemeDeckList.getSelectedValue(); CardPool schemePool = null; if (selected instanceof String) { @@ -319,7 +317,7 @@ public class ConstructedScreen extends LaunchScreen { } //Planechase - if (variantTypes.contains(GameType.Planechase)) { + if (appliedVariants.contains(GameType.Planechase)) { Object selected = playerPanel.planarDeckList.getSelectedValue(); CardPool planePool = null; if (selected instanceof String) { @@ -353,7 +351,7 @@ public class ConstructedScreen extends LaunchScreen { } //Vanguard - if (variantTypes.contains(GameType.Vanguard)) { + if (appliedVariants.contains(GameType.Vanguard)) { Object selected = playerPanel.vgdAvatarList.getSelectedValue(); if (selected instanceof String) { String sel = (String) selected; @@ -379,9 +377,9 @@ public class ConstructedScreen extends LaunchScreen { } } - rp = RegisteredPlayer.forVariants(variantTypes, deck, schemes, playerIsArchenemy, planes, vanguardAvatar); + rp = RegisteredPlayer.forVariants(appliedVariants, deck, schemes, playerIsArchenemy, planes, vanguardAvatar); rp.setTeamNumber(getTeam(i)); - players.add(rp.setPlayer(lobbyPlayer)); + launchParams.players.add(rp.setPlayer(lobbyPlayer)); } getDeckChooser(i).saveState(); } diff --git a/forge-gui-mobile/src/forge/screens/match/FControl.java b/forge-gui-mobile/src/forge/screens/match/FControl.java index cab765feb5a..3c4eefb487b 100644 --- a/forge-gui-mobile/src/forge/screens/match/FControl.java +++ b/forge-gui-mobile/src/forge/screens/match/FControl.java @@ -86,7 +86,7 @@ public class FControl { public static void startMatch(GameType gameType, List players) { startMatch(gameType, null, players); } - public static void startMatch(GameType gameType, List appliedVariants, List players) { + public static void startMatch(GameType gameType, Set appliedVariants, List players) { boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); for (RegisteredPlayer rp : players) { rp.setRandomFoil(useRandomFoil);