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

@@ -1,7 +1,7 @@
package forge.game; package forge.game;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.Set;
public class GameRules { public class GameRules {
private GameType gameType; private GameType gameType;
@@ -66,7 +66,7 @@ public class GameRules {
return gamesToWinMatch; return gamesToWinMatch;
} }
public void setAppliedVariants(List<GameType> appliedVariants) { public void setAppliedVariants(Set<GameType> appliedVariants) {
this.appliedVariants.addAll(appliedVariants); this.appliedVariants.addAll(appliedVariants);
} }

View File

@@ -9,6 +9,7 @@ import forge.item.PaperCard;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set;
public class RegisteredPlayer { public class RegisteredPlayer {
@@ -115,7 +116,7 @@ public class RegisteredPlayer {
} }
public static RegisteredPlayer forVariants( public static RegisteredPlayer forVariants(
final List<GameType> appliedVariants, final Deck deck, //General vars final Set<GameType> appliedVariants, final Deck deck, //General vars
final Iterable<PaperCard> schemes, final boolean playerIsArchenemy, //Archenemy specific vars final Iterable<PaperCard> schemes, final boolean playerIsArchenemy, //Archenemy specific vars
final Iterable<PaperCard> planes, final PaperCard vanguardAvatar) { //Planechase and Vanguard final Iterable<PaperCard> planes, final PaperCard vanguardAvatar) { //Planechase and Vanguard

View File

@@ -72,6 +72,7 @@ import java.awt.event.*;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* <p> * <p>
@@ -555,7 +556,7 @@ public enum FControl implements KeyEventDispatcher {
startMatch(gameType, null, players); startMatch(gameType, null, players);
} }
public void startMatch(GameType gameType, List<GameType> appliedVariants, List<RegisteredPlayer> players) { public void startMatch(GameType gameType, Set<GameType> appliedVariants, List<RegisteredPlayer> players) {
boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); boolean useRandomFoil = FModel.getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
for(RegisteredPlayer rp : players) { for(RegisteredPlayer rp : players) {
rp.setRandomFoil(useRandomFoil); rp.setRandomFoil(useRandomFoil);

View File

@@ -32,6 +32,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.Vector; import java.util.Vector;
//import forge.gui.home.variant.VSubmenuVanguard; //import forge.gui.home.variant.VSubmenuVanguard;
@@ -154,9 +155,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
view.getBtnStart().addActionListener(new ActionListener() { view.getBtnStart().addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(final ActionEvent arg0) { public void actionPerformed(final ActionEvent arg0) {
final List<GameType> variantTypes = new ArrayList<GameType>(4); startGame(view.getAppliedVariants());
variantTypes.addAll(view.getAppliedVariants());
startGame(variantTypes);
} }
}); });
@@ -184,7 +183,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
} }
/** Starts a match with the applied variants. */ /** Starts a match with the applied variants. */
private void startGame(final List<GameType> variantTypes) { private void startGame(final Set<GameType> variantTypes) {
if (!view.isEnoughTeams()) { if (!view.isEnoughTeams()) {
FOptionPane.showMessageDialog("There are not enough teams! Please adjust team allocations."); FOptionPane.showMessageDialog("There are not enough teams! Please adjust team allocations.");
return; return;

View File

@@ -63,7 +63,7 @@ public class FDeckChooser extends FScreen {
selectedDeckType = defaultDeckType; selectedDeckType = defaultDeckType;
if (decksComboBox == null) { //initialize components with delayed initialization the first time this is populated 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(); restoreSavedState();
decksComboBox.setChangedHandler(new FEventHandler() { decksComboBox.setChangedHandler(new FEventHandler() {
@Override @Override

View File

@@ -1,7 +1,9 @@
package forge.screens; package forge.screens;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import forge.screens.FScreen; import forge.screens.FScreen;
import forge.screens.match.FControl; import forge.screens.match.FControl;
@@ -36,7 +38,7 @@ public abstract class LaunchScreen extends FScreen {
protected class LaunchParams { protected class LaunchParams {
public GameType gameType; public GameType gameType;
public final List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>(); 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 { 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. } // Is it even possible anymore? I think current implementation assigns decks automatically.
final List<GameType> variantTypes = new ArrayList<GameType>(); launchParams.appliedVariants.addAll(appliedVariants);
variantTypes.addAll(appliedVariants);
boolean checkLegality = FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY); 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++) { for (int i = 0; i < getNumPlayers(); i++) {
String name = getPlayerName(i); String name = getPlayerName(i);
String errMsg = GameType.Constructed.getDecksFormat().getDeckConformanceProblem(getDeckChooser(i).getPlayer().getDeck()); String errMsg = GameType.Constructed.getDecksFormat().getDeckConformanceProblem(getDeckChooser(i).getPlayer().getDeck());
@@ -236,7 +235,6 @@ public class ConstructedScreen extends LaunchScreen {
} }
Lobby lobby = FServer.getLobby(); Lobby lobby = FServer.getLobby();
List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
for (int i = 0; i < getNumPlayers(); i++) { for (int i = 0; i < getNumPlayers(); i++) {
PlayerPanel playerPanel = playerPanels.get(i); PlayerPanel playerPanel = playerPanels.get(i);
String name = getPlayerName(i); String name = getPlayerName(i);
@@ -244,13 +242,13 @@ public class ConstructedScreen extends LaunchScreen {
getPlayerAvatar(i)) : lobby.getGuiPlayer(); getPlayerAvatar(i)) : lobby.getGuiPlayer();
RegisteredPlayer rp = playerPanel.deckChooser.getPlayer(); RegisteredPlayer rp = playerPanel.deckChooser.getPlayer();
if (variantTypes.isEmpty()) { if (appliedVariants.isEmpty()) {
rp.setTeamNumber(getTeam(i)); rp.setTeamNumber(getTeam(i));
players.add(rp.setPlayer(lobbyPlayer)); launchParams.players.add(rp.setPlayer(lobbyPlayer));
} }
else { else {
Deck deck = null; Deck deck = null;
boolean isCommanderMatch = variantTypes.contains(GameType.Commander); boolean isCommanderMatch = appliedVariants.contains(GameType.Commander);
if (isCommanderMatch) { if (isCommanderMatch) {
Object selected = playerPanel.commanderDeckList.getSelectedValue(); Object selected = playerPanel.commanderDeckList.getSelectedValue();
if (selected instanceof String) { if (selected instanceof String) {
@@ -283,8 +281,8 @@ public class ConstructedScreen extends LaunchScreen {
PaperCard vanguardAvatar = null; PaperCard vanguardAvatar = null;
//Archenemy //Archenemy
if (variantTypes.contains(GameType.ArchenemyRumble) if (appliedVariants.contains(GameType.ArchenemyRumble)
|| (variantTypes.contains(GameType.Archenemy) && playerIsArchenemy)) { || (appliedVariants.contains(GameType.Archenemy) && playerIsArchenemy)) {
Object selected = playerPanel.schemeDeckList.getSelectedValue(); Object selected = playerPanel.schemeDeckList.getSelectedValue();
CardPool schemePool = null; CardPool schemePool = null;
if (selected instanceof String) { if (selected instanceof String) {
@@ -319,7 +317,7 @@ public class ConstructedScreen extends LaunchScreen {
} }
//Planechase //Planechase
if (variantTypes.contains(GameType.Planechase)) { if (appliedVariants.contains(GameType.Planechase)) {
Object selected = playerPanel.planarDeckList.getSelectedValue(); Object selected = playerPanel.planarDeckList.getSelectedValue();
CardPool planePool = null; CardPool planePool = null;
if (selected instanceof String) { if (selected instanceof String) {
@@ -353,7 +351,7 @@ public class ConstructedScreen extends LaunchScreen {
} }
//Vanguard //Vanguard
if (variantTypes.contains(GameType.Vanguard)) { if (appliedVariants.contains(GameType.Vanguard)) {
Object selected = playerPanel.vgdAvatarList.getSelectedValue(); Object selected = playerPanel.vgdAvatarList.getSelectedValue();
if (selected instanceof String) { if (selected instanceof String) {
String sel = (String) selected; 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)); rp.setTeamNumber(getTeam(i));
players.add(rp.setPlayer(lobbyPlayer)); launchParams.players.add(rp.setPlayer(lobbyPlayer));
} }
getDeckChooser(i).saveState(); getDeckChooser(i).saveState();
} }

View File

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