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