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;
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<GameType> appliedVariants) {
public void setAppliedVariants(Set<GameType> appliedVariants) {
this.appliedVariants.addAll(appliedVariants);
}

View File

@@ -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<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> planes, final PaperCard vanguardAvatar) { //Planechase and Vanguard

View File

@@ -72,6 +72,7 @@ import java.awt.event.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* <p>
@@ -555,7 +556,7 @@ public enum FControl implements KeyEventDispatcher {
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);
for(RegisteredPlayer rp : players) {
rp.setRandomFoil(useRandomFoil);

View File

@@ -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<GameType> variantTypes = new ArrayList<GameType>(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<GameType> variantTypes) {
private void startGame(final Set<GameType> variantTypes) {
if (!view.isEnoughTeams()) {
FOptionPane.showMessageDialog("There are not enough teams! Please adjust team allocations.");
return;

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);