Adding Player state to TournamentPlayer and TournamentPanel.

This commit is contained in:
LevelX2 2013-07-01 17:11:44 +02:00
parent 7c5f1efe71
commit 06163d6ac5
8 changed files with 84 additions and 5 deletions

View file

@ -30,7 +30,7 @@
<Group type="102" attributes="0">
<Component id="actionPanel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jSplitPane2" pref="489" max="32767" attributes="0"/>
<Component id="jSplitPane2" pref="494" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>

View file

@ -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 "";

View file

@ -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;
}

View file

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

View file

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

View file

@ -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;
}
}

View file

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

View file

@ -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;
}
}