PlayerStartConditions renamed to RegisteredPlayer, lobbyPlayer added as a field

MatchState now starts with list of RegisteredPlayers, not a list of tuples
This commit is contained in:
Maxmtg
2013-05-28 14:32:38 +00:00
parent 9d989137e8
commit c58bb4b130
18 changed files with 96 additions and 120 deletions

2
.gitattributes vendored
View File

@@ -14225,7 +14225,7 @@ src/main/java/forge/game/GameType.java -text
src/main/java/forge/game/GlobalRuleChange.java -text src/main/java/forge/game/GlobalRuleChange.java -text
src/main/java/forge/game/MatchState.java -text src/main/java/forge/game/MatchState.java -text
src/main/java/forge/game/PlanarDice.java -text src/main/java/forge/game/PlanarDice.java -text
src/main/java/forge/game/PlayerStartConditions.java -text src/main/java/forge/game/RegisteredPlayer.java -text
src/main/java/forge/game/ai/AiAttackController.java svneol=native#text/plain src/main/java/forge/game/ai/AiAttackController.java svneol=native#text/plain
src/main/java/forge/game/ai/AiController.java svneol=native#text/plain src/main/java/forge/game/ai/AiController.java svneol=native#text/plain
src/main/java/forge/game/ai/AiProfileUtil.java -text src/main/java/forge/game/ai/AiProfileUtil.java -text

View File

@@ -27,7 +27,6 @@ import forge.deck.CardPool;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerType; import forge.game.player.PlayerType;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
@@ -68,7 +67,7 @@ public class GameNew {
} }
private static void initVariantsZones(final Player player, final PlayerStartConditions psc) { private static void initVariantsZones(final Player player, final RegisteredPlayer psc) {
PlayerZone com = player.getZone(ZoneType.Command); PlayerZone com = player.getZone(ZoneType.Command);
// Mainly for avatar, but might find something else here // Mainly for avatar, but might find something else here
@@ -240,10 +239,10 @@ public class GameNew {
boolean isFirstGame = game.getMatch().getPlayedGames().isEmpty(); boolean isFirstGame = game.getMatch().getPlayedGames().isEmpty();
boolean canSideBoard = !isFirstGame && gameType.isSideboardingAllowed(); boolean canSideBoard = !isFirstGame && gameType.isSideboardingAllowed();
final List<Pair<LobbyPlayer, PlayerStartConditions>> playersConditions = game.getMatch().getPlayers(); final List<RegisteredPlayer> playersConditions = game.getMatch().getPlayers();
for (int i = 0; i < playersConditions.size(); i++) { for (int i = 0; i < playersConditions.size(); i++) {
Player player = game.getPlayers().get(i); Player player = game.getPlayers().get(i);
final PlayerStartConditions psc = playersConditions.get(i).getRight(); final RegisteredPlayer psc = playersConditions.get(i);
putCardsOnBattlefield(player, psc.getCardsOnBattlefield(player)); putCardsOnBattlefield(player, psc.getCardsOnBattlefield(player));
initVariantsZones(player, psc); initVariantsZones(player, psc);
@@ -355,7 +354,7 @@ public class GameNew {
final Player player = gamePlayers.get(i); final Player player = gamePlayers.get(i);
if( player.hasLost()) continue; if( player.hasLost()) continue;
PlayerStartConditions psc = game.getMatch().getPlayers().get(i).getValue(); RegisteredPlayer psc = game.getMatch().getPlayers().get(i);
player.setStartingLife(psc.getStartingLife()); player.setStartingLife(psc.getStartingLife());
player.setNumLandsPlayed(0); player.setNumLandsPlayed(0);

View File

@@ -22,11 +22,8 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap; import java.util.TreeMap;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.eventbus.EventBus; import com.google.common.eventbus.EventBus;
import forge.Card; import forge.Card;
@@ -48,7 +45,6 @@ import forge.game.phase.EndOfTurn;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.Untap; import forge.game.phase.Untap;
import forge.game.phase.Upkeep; import forge.game.phase.Upkeep;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.MagicStack; import forge.game.zone.MagicStack;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
@@ -94,19 +90,18 @@ public class GameState {
* @param match0 * @param match0
* @param input * @param input
*/ */
public GameState(List<Pair<LobbyPlayer, PlayerStartConditions>> players0, GameType t, MatchState match0) { /* no more zones to map here */ public GameState(List<RegisteredPlayer> players0, GameType t, MatchState match0) { /* no more zones to map here */
type = t; type = t;
match = match0; match = match0;
List<Player> players = new ArrayList<Player>(); List<Player> players = new ArrayList<Player>();
allPlayers = Collections.unmodifiableList(players); allPlayers = Collections.unmodifiableList(players);
roIngamePlayers = Collections.unmodifiableList(ingamePlayers); roIngamePlayers = Collections.unmodifiableList(ingamePlayers);
for (Entry<LobbyPlayer, PlayerStartConditions> kv : players0) { for (RegisteredPlayer psc : players0) {
Player pl = kv.getKey().getPlayer(this); Player pl = psc.getPlayer().getPlayer(this);
players.add(pl); players.add(pl);
ingamePlayers.add(pl); ingamePlayers.add(pl);
PlayerStartConditions psc = kv.getValue();
pl.setStartingLife(psc.getStartingLife()); pl.setStartingLife(psc.getStartingLife());
pl.setMaxHandSize(psc.getStartingHand()); pl.setMaxHandSize(psc.getStartingHand());
pl.setStartingHandSize(psc.getStartingHand()); pl.setStartingHandSize(psc.getStartingHand());

View File

@@ -25,7 +25,7 @@ import forge.util.Aggregates;
public class MatchState { public class MatchState {
private final List<Pair<LobbyPlayer, PlayerStartConditions>> players; private final List<RegisteredPlayer> players;
private final GameType gameType; private final GameType gameType;
private int gamesPerMatch = 3; private int gamesPerMatch = 3;
@@ -41,13 +41,13 @@ public class MatchState {
/** /**
* This should become constructor once. * This should become constructor once.
*/ */
public MatchState(GameType type, List<Pair<LobbyPlayer, PlayerStartConditions>> players0) { public MatchState(GameType type, List<RegisteredPlayer> players0) {
gamesPlayedRo = Collections.unmodifiableList(gamesPlayed); gamesPlayedRo = Collections.unmodifiableList(gamesPlayed);
players = Collections.unmodifiableList(Lists.newArrayList(players0)); players = Collections.unmodifiableList(Lists.newArrayList(players0));
gameType = type; gameType = type;
} }
public MatchState(GameType type, List<Pair<LobbyPlayer, PlayerStartConditions>> players0, Boolean overrideAnte) { public MatchState(GameType type, List<RegisteredPlayer> players0, Boolean overrideAnte) {
this(type, players0); this(type, players0);
if( overrideAnte != null ) if( overrideAnte != null )
this.useAnte = overrideAnte.booleanValue(); this.useAnte = overrideAnte.booleanValue();
@@ -174,8 +174,8 @@ public class MatchState {
for (GameOutcome go : gamesPlayed) { for (GameOutcome go : gamesPlayed) {
LobbyPlayer winner = go.getWinner(); LobbyPlayer winner = go.getWinner();
int i = 0; int i = 0;
for (Pair<LobbyPlayer, PlayerStartConditions> p : players) { for (RegisteredPlayer p : players) {
if (p.getLeft().equals(winner)) { if (p.getPlayer().equals(winner)) {
victories[i]++; victories[i]++;
break; // can't have 2 winners per game break; // can't have 2 winners per game
} }
@@ -217,7 +217,7 @@ public class MatchState {
return getGamesWonBy(questPlayer) >= gamesToWinMatch; return getGamesWonBy(questPlayer) >= gamesToWinMatch;
} }
public List<Pair<LobbyPlayer, PlayerStartConditions>> getPlayers() { public List<RegisteredPlayer> getPlayers() {
return players; return players;
} }

View File

@@ -6,16 +6,20 @@ import java.util.List;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.item.IPaperCard; import forge.item.IPaperCard;
public class PlayerStartConditions { public class RegisteredPlayer {
private final Deck originalDeck; private final Deck originalDeck;
private Deck currentDeck; private Deck currentDeck;
private static final Iterable<CardPrinted> EmptyList = Collections.unmodifiableList(new ArrayList<CardPrinted>()); private static final Iterable<CardPrinted> EmptyList = Collections.unmodifiableList(new ArrayList<CardPrinted>());
private LobbyPlayer player = null;
private int startingLife = 20; private int startingLife = 20;
private int startingHand = 7; private int startingHand = 7;
private Iterable<IPaperCard> cardsOnBattlefield = null; private Iterable<IPaperCard> cardsOnBattlefield = null;
@@ -24,7 +28,7 @@ public class PlayerStartConditions {
private Iterable<CardPrinted> planes = null; private Iterable<CardPrinted> planes = null;
private int teamNumber = -1; // members of teams with negative id will play FFA. private int teamNumber = -1; // members of teams with negative id will play FFA.
public PlayerStartConditions(Deck deck0) { public RegisteredPlayer(Deck deck0) {
originalDeck = deck0; originalDeck = deck0;
currentDeck = originalDeck; currentDeck = originalDeck;
} }
@@ -133,17 +137,17 @@ public class PlayerStartConditions {
} }
public static PlayerStartConditions fromDeck(final Deck deck) { public static RegisteredPlayer fromDeck(final Deck deck) {
PlayerStartConditions start = new PlayerStartConditions(deck); RegisteredPlayer start = new RegisteredPlayer(deck);
if( deck != null && deck.has(DeckSection.Commander)) { if( deck != null && deck.has(DeckSection.Commander)) {
start.setStartingLife(40); start.setStartingLife(40);
start.addCardsInCommand(deck.get(DeckSection.Commander).toFlatList()); start.addCardsInCommand(deck.get(DeckSection.Commander).toFlatList());
} }
return new PlayerStartConditions(deck); return new RegisteredPlayer(deck);
} }
public static PlayerStartConditions forVanguard(final Deck deck, final CardPrinted avatar) { public static RegisteredPlayer forVanguard(final Deck deck, final CardPrinted avatar) {
PlayerStartConditions start = fromDeck(deck); RegisteredPlayer start = fromDeck(deck);
start.setStartingLife(start.getStartingLife() + avatar.getRules().getLife()); start.setStartingLife(start.getStartingLife() + avatar.getRules().getLife());
start.setStartingHand(start.getStartingHand() + avatar.getRules().getHand()); start.setStartingHand(start.getStartingHand() + avatar.getRules().getHand());
start.addCardsInCommand(avatar); start.addCardsInCommand(avatar);
@@ -151,17 +155,26 @@ public class PlayerStartConditions {
} }
public static PlayerStartConditions forArchenemy(final Deck deck, final Iterable<CardPrinted> schemes) { public static RegisteredPlayer forArchenemy(final Deck deck, final Iterable<CardPrinted> schemes) {
PlayerStartConditions start = fromDeck(deck); RegisteredPlayer start = fromDeck(deck);
start.setSchemes(schemes); start.setSchemes(schemes);
return start; return start;
} }
public static PlayerStartConditions forPlanechase(final Deck deck, final Iterable<CardPrinted> planes) { public static RegisteredPlayer forPlanechase(final Deck deck, final Iterable<CardPrinted> planes) {
PlayerStartConditions start = fromDeck(deck); RegisteredPlayer start = fromDeck(deck);
start.setPlanes(planes); start.setPlanes(planes);
return start; return start;
} }
public LobbyPlayer getPlayer() {
return player;
}
public RegisteredPlayer setPlayer(LobbyPlayer player0) {
this.player = player0;
return this;
}
} }

View File

@@ -22,16 +22,13 @@ import java.util.List;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
import forge.control.Lobby; import forge.control.Lobby;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
/** /**
@@ -52,7 +49,7 @@ public class GauntletMini {
private int losses; private int losses;
private boolean gauntletDraft; // Means: Draft game is in Gauntlet-mode, not a single match private boolean gauntletDraft; // Means: Draft game is in Gauntlet-mode, not a single match
private GameType gauntletType; private GameType gauntletType;
private List<PlayerStartConditions> aiOpponents = new ArrayList<PlayerStartConditions>(); private List<RegisteredPlayer> aiOpponents = new ArrayList<RegisteredPlayer>();
// private final String humanName; // private final String humanName;
/** /**
@@ -145,7 +142,7 @@ public class GauntletMini {
aiOpponents.clear(); aiOpponents.clear();
for (int i = 0; i < Math.min(gameRounds, aiDecks.size()); i++) { for (int i = 0; i < Math.min(gameRounds, aiDecks.size()); i++) {
aiOpponents.add(new PlayerStartConditions(aiDecks.get(i))); aiOpponents.add(new RegisteredPlayer(aiDecks.get(i)));
} }
resetCurrentRound(); resetCurrentRound();
@@ -164,11 +161,10 @@ public class GauntletMini {
} }
}); });
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(Pair.of(lobby.getGuiPlayer(), PlayerStartConditions.fromDeck(humanDeck))); starter.add(RegisteredPlayer.fromDeck(humanDeck).setPlayer(lobby.getGuiPlayer()));
starter.add(Pair.of(lobby.getAiPlayer(), aiOpponents.get(currentRound - 1))); starter.add(aiOpponents.get(currentRound - 1).setPlayer(lobby.getAiPlayer()));
final MatchState mc = new MatchState(gauntletType, starter); final MatchState mc = new MatchState(gauntletType, starter);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){
@Override @Override

View File

@@ -11,9 +11,6 @@ import java.util.List;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import forge.Command; import forge.Command;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
@@ -22,8 +19,7 @@ import forge.deck.Deck;
import forge.deck.DeckgenUtil; import forge.deck.DeckgenUtil;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer;
import forge.gauntlet.GauntletData; import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -121,11 +117,11 @@ public enum CSubmenuGauntletContests implements ICDoc {
Deck aiDeck = gd.getDecks().get(gd.getCompleted()); Deck aiDeck = gd.getDecks().get(gd.getCompleted());
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(ImmutablePair.of(lobby.getGuiPlayer(), PlayerStartConditions.fromDeck(gd.getUserDeck()))); starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
starter.add(ImmutablePair.of(lobby.getAiPlayer(), PlayerStartConditions.fromDeck(aiDeck))); starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
final MatchState mc = new MatchState(GameType.Gauntlet, starter); final MatchState mc = new MatchState(GameType.Gauntlet, starter);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -9,8 +9,6 @@ import java.util.List;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import forge.Command; import forge.Command;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
@@ -18,8 +16,7 @@ import forge.control.Lobby;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer;
import forge.gauntlet.GauntletData; import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -113,10 +110,10 @@ public enum CSubmenuGauntletLoad implements ICDoc {
final GauntletData gd = FModel.SINGLETON_INSTANCE.getGauntletData(); final GauntletData gd = FModel.SINGLETON_INSTANCE.getGauntletData();
final Deck aiDeck = gd.getDecks().get(gd.getCompleted()); final Deck aiDeck = gd.getDecks().get(gd.getCompleted());
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(Pair.of(lobby.getGuiPlayer(), PlayerStartConditions.fromDeck(gd.getUserDeck()))); starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
starter.add(Pair.of(lobby.getAiPlayer(), PlayerStartConditions.fromDeck(aiDeck))); starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
final MatchState mc = new MatchState(GameType.Gauntlet, starter); final MatchState mc = new MatchState(GameType.Gauntlet, starter);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -10,8 +10,6 @@ import java.util.Set;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import forge.Command; import forge.Command;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
@@ -21,8 +19,7 @@ import forge.deck.DeckgenUtil;
import forge.deck.DeckgenUtil.DeckTypes; import forge.deck.DeckgenUtil.DeckTypes;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer;
import forge.gauntlet.GauntletData; import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -147,10 +144,10 @@ public enum CSubmenuGauntletQuick implements ICDoc {
final Deck aiDeck = gd.getDecks().get(gd.getCompleted()); final Deck aiDeck = gd.getDecks().get(gd.getCompleted());
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(Pair.of(lobby.getGuiPlayer(), PlayerStartConditions.fromDeck(gd.getUserDeck()))); starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
starter.add(Pair.of(lobby.getAiPlayer(), PlayerStartConditions.fromDeck(aiDeck))); starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
final MatchState mc = new MatchState(GameType.Gauntlet, starter); final MatchState mc = new MatchState(GameType.Gauntlet, starter);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -10,8 +10,6 @@ import javax.swing.SwingUtilities;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
import forge.card.CardEdition; import forge.card.CardEdition;
@@ -20,7 +18,7 @@ import forge.control.Lobby;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -419,8 +417,8 @@ public class SSubmenuQuestUtil {
forceAnte = qc.isForceAnte(); forceAnte = qc.isForceAnte();
} }
PlayerStartConditions humanStart = new PlayerStartConditions(deck); RegisteredPlayer humanStart = new RegisteredPlayer(deck);
PlayerStartConditions aiStart = new PlayerStartConditions(event.getEventDeck()); RegisteredPlayer aiStart = new RegisteredPlayer(event.getEventDeck());
if (lifeHuman != null) { if (lifeHuman != null) {
humanStart.setStartingLife(lifeHuman); humanStart.setStartingLife(lifeHuman);
@@ -434,13 +432,13 @@ public class SSubmenuQuestUtil {
aiStart.setCardsOnBattlefield(QuestUtil.getComputerStartingCards(event)); aiStart.setCardsOnBattlefield(QuestUtil.getComputerStartingCards(event));
} }
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(Pair.of(lobby.getQuestPlayer(), humanStart)); starter.add(humanStart.setPlayer(lobby.getQuestPlayer()));
LobbyPlayer aiPlayer = Singletons.getControl().getLobby().getAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent()); LobbyPlayer aiPlayer = Singletons.getControl().getLobby().getAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent());
aiPlayer.setIconImageKey(event.getIconImageKey()); aiPlayer.setIconImageKey(event.getIconImageKey());
starter.add(Pair.of(aiPlayer, aiStart)); starter.add(aiStart.setPlayer(aiPlayer));
final MatchState mc = new MatchState(GameType.Quest, starter, forceAnte); final MatchState mc = new MatchState(GameType.Quest, starter, forceAnte);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -7,16 +7,13 @@ import java.util.List;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import forge.Command; import forge.Command;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
import forge.control.Lobby; import forge.control.Lobby;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
@@ -100,8 +97,8 @@ public enum CSubmenuConstructed implements ICDoc {
* @param gameType * @param gameType
*/ */
private void startGame(final GameType gameType) { private void startGame(final GameType gameType) {
PlayerStartConditions pscLeft = view.getDcLeft().getDeck(); RegisteredPlayer pscLeft = view.getDcLeft().getDeck();
PlayerStartConditions pscRight = view.getDcRight().getDeck(); RegisteredPlayer pscRight = view.getDcRight().getDeck();
String humanDeckErrorMessage = gameType.getDecksFormat().getDeckConformanceProblem(pscRight.getOriginalDeck()); String humanDeckErrorMessage = gameType.getDecksFormat().getDeckConformanceProblem(pscRight.getOriginalDeck());
if (null != humanDeckErrorMessage) { if (null != humanDeckErrorMessage) {
@@ -119,15 +116,14 @@ public enum CSubmenuConstructed implements ICDoc {
LobbyPlayer rightPlayer = view.isRightPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer(); LobbyPlayer rightPlayer = view.isRightPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer();
LobbyPlayer leftPlayer = view.isLeftPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer(); LobbyPlayer leftPlayer = view.isLeftPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer();
List<Pair<LobbyPlayer, PlayerStartConditions>> players = new ArrayList<Pair<LobbyPlayer, PlayerStartConditions>>(); List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
players.add(ImmutablePair.of(rightPlayer, pscRight)); players.add(pscRight.setPlayer(rightPlayer));
players.add(ImmutablePair.of(leftPlayer, pscLeft)); players.add(pscLeft.setPlayer(leftPlayer));
final MatchState mc = new MatchState(gameType, players); final MatchState mc = new MatchState(gameType, players);
SOverlayUtils.startGameOverlay(); SOverlayUtils.startGameOverlay();
SOverlayUtils.showOverlay(); SOverlayUtils.showOverlay();
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){
@Override @Override
public void run() { public void run() {

View File

@@ -9,8 +9,6 @@ import javax.swing.JButton;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import forge.Command; import forge.Command;
import forge.FThreads; import forge.FThreads;
import forge.Singletons; import forge.Singletons;
@@ -20,10 +18,9 @@ import forge.deck.Deck;
import forge.deck.DeckGroup; import forge.deck.DeckGroup;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.limited.BoosterDraft; import forge.game.limited.BoosterDraft;
import forge.game.limited.LimitedPoolType; import forge.game.limited.LimitedPoolType;
import forge.game.player.LobbyPlayer;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.deckeditor.CDeckEditorUI; import forge.gui.deckeditor.CDeckEditorUI;
@@ -134,10 +131,10 @@ public enum CSubmenuDraft implements ICDoc {
throw new IllegalStateException("Draft: Computer deck is null!"); throw new IllegalStateException("Draft: Computer deck is null!");
} }
List<Pair<LobbyPlayer, PlayerStartConditions>> starter = new ArrayList<Pair<LobbyPlayer, PlayerStartConditions>>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
starter.add(Pair.of(lobby.getGuiPlayer(), PlayerStartConditions.fromDeck(humanDeck))); starter.add(RegisteredPlayer.fromDeck(humanDeck).setPlayer(lobby.getGuiPlayer()));
starter.add(Pair.of(lobby.getAiPlayer(), PlayerStartConditions.fromDeck(aiDeck))); starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
final MatchState mc = new MatchState(GameType.Draft, starter); final MatchState mc = new MatchState(GameType.Draft, starter);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -8,9 +8,6 @@ import java.util.Vector;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import forge.Command; import forge.Command;
@@ -23,8 +20,7 @@ import forge.deck.DeckSection;
import forge.deck.DeckgenUtil; import forge.deck.DeckgenUtil;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.deckeditor.CDeckEditorUI; import forge.gui.deckeditor.CDeckEditorUI;
@@ -166,7 +162,7 @@ public enum CSubmenuArchenemy implements ICDoc {
List<Deck> playerDecks = new ArrayList<Deck>(); List<Deck> playerDecks = new ArrayList<Deck>();
for (int i = 0; i < view.getNumPlayers(); i++) { for (int i = 0; i < view.getNumPlayers(); i++) {
PlayerStartConditions d = view.getDeckChoosers().get(i).getDeck(); RegisteredPlayer d = view.getDeckChoosers().get(i).getDeck();
if (d == null) { if (d == null) {
//ERROR! //ERROR!
@@ -224,17 +220,17 @@ public enum CSubmenuArchenemy implements ICDoc {
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
List<Pair<LobbyPlayer, PlayerStartConditions>> players = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
for (int i = 0; i < view.getNumPlayers(); i++) { for (int i = 0; i < view.getNumPlayers(); i++) {
if (i == 0) { if (i == 0) {
PlayerStartConditions psc = PlayerStartConditions.forArchenemy(playerDecks.get(i), schemes); RegisteredPlayer psc = RegisteredPlayer.forArchenemy(playerDecks.get(i), schemes);
psc.setStartingLife(10 + (10 * (view.getNumPlayers() - 1))); psc.setStartingLife(10 + (10 * (view.getNumPlayers() - 1)));
players.add(ImmutablePair.of(lobby.getGuiPlayer(), psc)); players.add(psc.setPlayer(lobby.getGuiPlayer()));
} else { } else {
PlayerStartConditions psc = PlayerStartConditions.fromDeck(playerDecks.get(i)); RegisteredPlayer psc = RegisteredPlayer.fromDeck(playerDecks.get(i));
psc.setTeamNumber(0); psc.setTeamNumber(0);
players.add(ImmutablePair.of(lobby.getAiPlayer(), psc)); players.add(psc.setPlayer(lobby.getAiPlayer()));
} }
} }

View File

@@ -8,8 +8,6 @@ import java.util.Vector;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import forge.Command; import forge.Command;
@@ -22,7 +20,7 @@ import forge.deck.DeckSection;
import forge.deck.DeckgenUtil; import forge.deck.DeckgenUtil;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -152,10 +150,10 @@ public enum CSubmenuPlanechase implements ICDoc {
/** @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */ /** @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */
private void startGame() { private void startGame() {
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
List<Pair<LobbyPlayer, PlayerStartConditions>> helper = new ArrayList<Pair<LobbyPlayer,PlayerStartConditions>>(); List<RegisteredPlayer> helper = new ArrayList<RegisteredPlayer>();
List<Deck> playerDecks = new ArrayList<Deck>(); List<Deck> playerDecks = new ArrayList<Deck>();
for (int i = 0; i < view.getNumPlayers(); i++) { for (int i = 0; i < view.getNumPlayers(); i++) {
PlayerStartConditions d = view.getDeckChoosers().get(i).getDeck(); RegisteredPlayer d = view.getDeckChoosers().get(i).getDeck();
if (d == null) { if (d == null) {
//ERROR! //ERROR!
@@ -211,7 +209,7 @@ public enum CSubmenuPlanechase implements ICDoc {
GuiDialog.message("Player " + (i+1) + " will use a default planar deck."); GuiDialog.message("Player " + (i+1) + " will use a default planar deck.");
} }
LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer(); LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer();
helper.add(Pair.of(player, PlayerStartConditions.forPlanechase(playerDecks.get(i), planes))); helper.add(RegisteredPlayer.forPlanechase(playerDecks.get(i), planes).setPlayer(player));
} }
SOverlayUtils.startGameOverlay(); SOverlayUtils.startGameOverlay();

View File

@@ -8,8 +8,6 @@ import java.util.Random;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import org.apache.commons.lang3.tuple.Pair;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import forge.Command; import forge.Command;
@@ -20,7 +18,7 @@ import forge.deck.Deck;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -123,7 +121,7 @@ public enum CSubmenuVanguard implements ICDoc {
List<Deck> playerDecks = new ArrayList<Deck>(); List<Deck> playerDecks = new ArrayList<Deck>();
for (int i = 0; i < view.getNumPlayers(); i++) { for (int i = 0; i < view.getNumPlayers(); i++) {
PlayerStartConditions d = view.getDeckChoosers().get(i).getDeck(); RegisteredPlayer d = view.getDeckChoosers().get(i).getDeck();
if (d == null) { if (d == null) {
//ERROR! //ERROR!
@@ -174,10 +172,10 @@ public enum CSubmenuVanguard implements ICDoc {
} }
Lobby lobby = Singletons.getControl().getLobby(); Lobby lobby = Singletons.getControl().getLobby();
List<Pair<LobbyPlayer, PlayerStartConditions>> helper = new ArrayList<Pair<LobbyPlayer, PlayerStartConditions>>(); List<RegisteredPlayer> helper = new ArrayList<RegisteredPlayer>();
for (int i = 0; i < view.getNumPlayers(); i++) { for (int i = 0; i < view.getNumPlayers(); i++) {
LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer(); LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer();
helper.add(Pair.of(player, PlayerStartConditions.forVanguard(playerDecks.get(i), playerAvatars.get(i)))); helper.add(RegisteredPlayer.forVanguard(playerDecks.get(i), playerAvatars.get(i)).setPlayer(player));
} }
final MatchState mc = new MatchState(GameType.Vanguard, helper); final MatchState mc = new MatchState(GameType.Vanguard, helper);
FThreads.invokeInEdtLater(new Runnable(){ FThreads.invokeInEdtLater(new Runnable(){

View File

@@ -14,7 +14,7 @@ import forge.deck.Deck;
import forge.game.GameOutcome; import forge.game.GameOutcome;
import forge.game.GameType; import forge.game.GameType;
import forge.game.MatchState; import forge.game.MatchState;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
@@ -127,7 +127,7 @@ public class ControlWinLose {
List<Card> compAntes = new ArrayList<Card>(fromGame.getCardsIn(ZoneType.Ante)); List<Card> compAntes = new ArrayList<Card>(fromGame.getCardsIn(ZoneType.Ante));
PlayerStartConditions psc = match.getPlayers().get(i).getValue(); RegisteredPlayer psc = match.getPlayers().get(i);
Deck cDeck = psc.getCurrentDeck(); Deck cDeck = psc.getCurrentDeck();
Deck oDeck = psc.getOriginalDeck(); Deck oDeck = psc.getOriginalDeck();
@@ -148,7 +148,7 @@ public class ControlWinLose {
if (fromGame.isHuman()) { if (fromGame.isHuman()) {
List<CardPrinted> chosen = GuiChoose.noneOrMany("Select cards to add to your deck", losses); List<CardPrinted> chosen = GuiChoose.noneOrMany("Select cards to add to your deck", losses);
if (null != chosen) { if (null != chosen) {
PlayerStartConditions psc = match.getPlayers().get(i).getValue(); RegisteredPlayer psc = match.getPlayers().get(i);
Deck cDeck = psc.getCurrentDeck(); Deck cDeck = psc.getCurrentDeck();
//Deck oDeck = psc.getOriginalDeck(); //Deck oDeck = psc.getOriginalDeck();
for (CardPrinted c : chosen) { for (CardPrinted c : chosen) {

View File

@@ -158,7 +158,7 @@ public enum CDock implements ICDoc {
*/ */
private void viewDeckList() { private void viewDeckList() {
showDeck(game.getMatch().getPlayers().get(0).getValue().getCurrentDeck()); showDeck(game.getMatch().getPlayers().get(0).getCurrentDeck());
} }
/** /**

View File

@@ -25,7 +25,7 @@ import forge.Singletons;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckgenUtil; import forge.deck.DeckgenUtil;
import forge.deck.generate.GenerateThemeDeck; import forge.deck.generate.GenerateThemeDeck;
import forge.game.PlayerStartConditions; import forge.game.RegisteredPlayer;
import forge.quest.QuestController; import forge.quest.QuestController;
import forge.quest.QuestEvent; import forge.quest.QuestEvent;
import forge.quest.QuestEventChallenge; import forge.quest.QuestEventChallenge;
@@ -232,7 +232,7 @@ public class FDeckChooser extends JPanel {
} }
/** Generates deck from current list selection(s). */ /** Generates deck from current list selection(s). */
public PlayerStartConditions getDeck() { public RegisteredPlayer getDeck() {
JList lst0 = getLstDecks(); JList lst0 = getLstDecks();
@@ -243,7 +243,7 @@ public class FDeckChooser extends JPanel {
// Special branch for quest events // Special branch for quest events
if (lst0.getName().equals(DeckgenUtil.DeckTypes.QUESTEVENTS.toString())) { if (lst0.getName().equals(DeckgenUtil.DeckTypes.QUESTEVENTS.toString())) {
QuestEvent event = DeckgenUtil.getQuestEvent(selection[0]); QuestEvent event = DeckgenUtil.getQuestEvent(selection[0]);
PlayerStartConditions result = new PlayerStartConditions(event.getEventDeck()); RegisteredPlayer result = new RegisteredPlayer(event.getEventDeck());
if( event instanceof QuestEventChallenge ) { if( event instanceof QuestEventChallenge ) {
result.setStartingLife(((QuestEventChallenge) event).getAiLife()); result.setStartingLife(((QuestEventChallenge) event).getAiLife());
} }
@@ -260,7 +260,7 @@ public class FDeckChooser extends JPanel {
deck = DeckgenUtil.getConstructedDeck(selection); deck = DeckgenUtil.getConstructedDeck(selection);
} }
return PlayerStartConditions.fromDeck(deck); return RegisteredPlayer.fromDeck(deck);
} }