mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Support actually starting a match again
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user