From 06163d6ac5cf26263dee7966e00959ddd5e74bb2 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 1 Jul 2013 17:11:44 +0200 Subject: [PATCH] Adding Player state to TournamentPlayer and TournamentPanel. --- .../client/tournament/TournamentPanel.form | 2 +- .../client/tournament/TournamentPanel.java | 6 ++-- .../src/mage/view/TournamentPlayerView.java | 10 +++++++ .../BoosterDraftEliminationTournament.java | 2 ++ .../tournament/TournamentController.java | 9 ++++-- .../mage/constants/TournamentPlayerState.java | 30 +++++++++++++++++++ .../mage/game/tournament/TournamentImpl.java | 6 ++++ .../game/tournament/TournamentPlayer.java | 24 +++++++++++++++ 8 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 Mage/src/mage/constants/TournamentPlayerState.java diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form index b4ea2d18c9a..b6fb03d1ee1 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form @@ -30,7 +30,7 @@ - + diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java index 1aedff7c459..eb3ae5d8681 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java @@ -363,7 +363,7 @@ public class TournamentPanel extends javax.swing.JPanel { } class TournamentPlayersTableModel extends AbstractTableModel { - private String[] columnNames = new String[]{"Player Name", "Points", "Results"}; + private String[] columnNames = new String[]{"Player Name", "State", "Points", "Results"}; private TournamentPlayerView[] players = new TournamentPlayerView[0]; public void loadData(TournamentView tournament) { @@ -387,8 +387,10 @@ class TournamentPlayersTableModel extends AbstractTableModel { case 0: return players[arg0].getName(); case 1: - return Integer.toString(players[arg0].getPoints()); + return players[arg0].getState(); case 2: + return Integer.toString(players[arg0].getPoints()); + case 3: return players[arg0].getResults(); } return ""; diff --git a/Mage.Common/src/mage/view/TournamentPlayerView.java b/Mage.Common/src/mage/view/TournamentPlayerView.java index f1088e4e000..a95c8d816c0 100644 --- a/Mage.Common/src/mage/view/TournamentPlayerView.java +++ b/Mage.Common/src/mage/view/TournamentPlayerView.java @@ -39,11 +39,17 @@ public class TournamentPlayerView implements Serializable { private static final long serialVersionUID = 1L; private String name; + private String state; private String results; private int points; TournamentPlayerView(TournamentPlayer player) { this.name = player.getPlayer().getName(); + StringBuilder sb = new StringBuilder(player.getState().toString()); + if (!player.getStateInfo().isEmpty()) { + sb.append(" (").append(player.getStateInfo()).append(")"); + } + this.state = sb.toString(); this.points = player.getPoints(); this.results = player.getResults(); } @@ -52,6 +58,10 @@ public class TournamentPlayerView implements Serializable { return this.name; } + public String getState() { + return state; + } + public int getPoints() { return this.points; } diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/BoosterDraftEliminationTournament.java b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/BoosterDraftEliminationTournament.java index d541f4537df..1cdd94fb028 100644 --- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/BoosterDraftEliminationTournament.java +++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/BoosterDraftEliminationTournament.java @@ -28,6 +28,7 @@ package mage.tournament; +import mage.constants.TournamentPlayerState; import mage.game.draft.BoosterDraft; import mage.game.draft.Draft; import mage.game.draft.DraftOptions; @@ -57,6 +58,7 @@ public class BoosterDraftEliminationTournament extends TournamentSingleEliminati Draft draft = new BoosterDraft((DraftOptions) options.getLimitedOptions(), getSets()); for (TournamentPlayer player: players.values()) { draft.addPlayer(player.getPlayer()); + player.setState(TournamentPlayerState.DRAFTING); } tableEventSource.fireTableEvent(EventType.START_DRAFT, null, draft); } diff --git a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java index a408913541e..762fabf8655 100644 --- a/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java +++ b/Mage.Server/src/main/java/mage/server/tournament/TournamentController.java @@ -33,6 +33,7 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import mage.MageException; import mage.cards.decks.Deck; +import mage.constants.TournamentPlayerState; import mage.game.GameException; import mage.game.Table; import mage.game.draft.Draft; @@ -201,6 +202,8 @@ public class TournamentController { tableManager.addPlayer(getPlayerSessionId(player2.getPlayer().getId()), table.getId(), player2.getPlayer(), player2.getPlayerType(), player2.getDeck()); tableManager.startMatch(null, table.getId()); pair.setMatch(tableManager.getMatch(table.getId())); + player1.setState(TournamentPlayerState.DUELING); + player2.setState(TournamentPlayerState.DUELING); } catch (GameException ex) { logger.fatal("TournamentController startMatch error", ex); } @@ -223,16 +226,18 @@ public class TournamentController { TournamentSession tournamentSession = tournamentSessions.get(playerId); tournamentSession.construct(timeout); UserManager.getInstance().getUser(getPlayerSessionId(playerId)).addConstructing(playerId, tournamentSession); + TournamentPlayer player = tournament.getPlayer(playerId); + player.setState(TournamentPlayerState.CONSTRUCTING); } } public void submitDeck(UUID playerId, Deck deck) { if (tournamentSessions.containsKey(playerId)) { - tournamentSessions.get(playerId).submitDeck(deck); TournamentPlayer player = tournament.getPlayer(playerId); if (player != null) { - ChatManager.getInstance().broadcast(chatId, "", player.getPlayer().getName() + " has submitted the deck", MessageColor.BLACK); + ChatManager.getInstance().broadcast(chatId, "", player.getPlayer().getName() + " has submitted his tournament deck", MessageColor.BLACK); } + tournamentSessions.get(playerId).submitDeck(deck); } } diff --git a/Mage/src/mage/constants/TournamentPlayerState.java b/Mage/src/mage/constants/TournamentPlayerState.java new file mode 100644 index 00000000000..4fe51dd3506 --- /dev/null +++ b/Mage/src/mage/constants/TournamentPlayerState.java @@ -0,0 +1,30 @@ +package mage.constants; + +/** + * + * @author LevelX2 + */ + +public enum TournamentPlayerState { + JOINED ("Joined"), + DRAFTING ("Drafting"), + CONSTRUCTING ("Constructing"), + DUELING ("Dueling"), + SIDEBOARDING ("Sideboarding"), + WAITING ("Waiting for next round"), + ELIMINATED ("Eliminated"), + CANCELED ("Canceled"), + FINISHED ("Finished"); // winner or player in swiss style + + private String text; + + TournamentPlayerState(String text) { + this.text = text; + } + + @Override + public String toString() { + return text; + } + +} diff --git a/Mage/src/mage/game/tournament/TournamentImpl.java b/Mage/src/mage/game/tournament/TournamentImpl.java index 5f4aeb42c76..5b799504f34 100644 --- a/Mage/src/mage/game/tournament/TournamentImpl.java +++ b/Mage/src/mage/game/tournament/TournamentImpl.java @@ -33,6 +33,7 @@ import java.util.concurrent.CopyOnWriteArrayList; import mage.cards.Card; import mage.cards.ExpansionSet; import mage.cards.decks.Deck; +import mage.constants.TournamentPlayerState; import mage.game.events.*; import mage.game.events.TableEvent.EventType; import mage.game.match.Match; @@ -146,6 +147,11 @@ public abstract class TournamentImpl implements Tournament { Round round = new Round(rounds.size() + 1); rounds.add(round); List roundPlayers = getActivePlayers(); + if (roundPlayers.size() == 1) { + TournamentPlayer winner = roundPlayers.get(0); + winner.setState(TournamentPlayerState.FINISHED); + winner.setStateInfo("Winner"); + } while (roundPlayers.size() > 1) { int i = rnd.nextInt(roundPlayers.size()); TournamentPlayer player1 = roundPlayers.get(i); diff --git a/Mage/src/mage/game/tournament/TournamentPlayer.java b/Mage/src/mage/game/tournament/TournamentPlayer.java index 742169598cc..139d17ec3e0 100644 --- a/Mage/src/mage/game/tournament/TournamentPlayer.java +++ b/Mage/src/mage/game/tournament/TournamentPlayer.java @@ -30,6 +30,7 @@ package mage.game.tournament; import mage.cards.Card; import mage.cards.decks.Deck; +import mage.constants.TournamentPlayerState; import mage.players.Player; /** @@ -40,6 +41,8 @@ public class TournamentPlayer { protected int points; protected String playerType; + protected TournamentPlayerState state; + protected String stateInfo = ""; protected Player player; protected Deck deck; protected String results = ""; @@ -50,6 +53,7 @@ public class TournamentPlayer { public TournamentPlayer(Player player, String playerType) { this.player = player; this.playerType = playerType; + this.state = TournamentPlayerState.JOINED; } public Player getPlayer() { @@ -77,6 +81,7 @@ public class TournamentPlayer { } public void setEliminated() { + this.setState(TournamentPlayerState.ELIMINATED); this.eliminated = true; } @@ -89,12 +94,14 @@ public class TournamentPlayer { } public void setConstructing() { + this.setState(TournamentPlayerState.CONSTRUCTING); this.doneConstructing = false; } public void submitDeck(Deck deck) { this.deck = deck; this.doneConstructing = true; + this.setState(TournamentPlayerState.WAITING); } public void updateDeck(Deck deck) { @@ -126,4 +133,21 @@ public class TournamentPlayer { public void setResults(String results) { this.results = results; } + + public TournamentPlayerState getState() { + return state; + } + + public void setState(TournamentPlayerState state) { + this.state = state; + } + + public String getStateInfo() { + return stateInfo; + } + + public void setStateInfo(String stateInfo) { + this.stateInfo = stateInfo; + } } +