Support actually starting a match again

This commit is contained in:
drdev
2014-04-11 15:36:35 +00:00
parent be8acb8333
commit 0ebe9fb7e6
8 changed files with 25 additions and 24 deletions

View File

@@ -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<DeckType>();
decksComboBox = new FComboBox<DeckType>(DeckType.values());
restoreSavedState();
decksComboBox.setChangedHandler(new FEventHandler() {
@Override

View File

@@ -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<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
public final List<GameType> appliedVariants = new ArrayList<GameType>();
public final Set<GameType> appliedVariants = new HashSet<GameType>();
}
private class StartButton extends FDisplayObject {

View File

@@ -220,11 +220,10 @@ public class ConstructedScreen extends LaunchScreen {
}
} // Is it even possible anymore? I think current implementation assigns decks automatically.
final List<GameType> variantTypes = new ArrayList<GameType>();
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<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
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();
}

View File

@@ -86,7 +86,7 @@ public class FControl {
public static void startMatch(GameType gameType, List<RegisteredPlayer> players) {
startMatch(gameType, null, players);
}
public static void startMatch(GameType gameType, List<GameType> appliedVariants, List<RegisteredPlayer> players) {
public static void startMatch(GameType gameType, Set<GameType> appliedVariants, List<RegisteredPlayer> players) {
boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
for (RegisteredPlayer rp : players) {
rp.setRandomFoil(useRandomFoil);