draft stuff

This commit is contained in:
BetaSteward 2011-01-08 23:54:32 -05:00
parent 2e13136101
commit 03e3be90d6
34 changed files with 1238 additions and 743 deletions

View file

@ -50,7 +50,7 @@ import mage.players.PlayerList;
*
* @author BetaSteward_at_googlemail.com
*/
public class DraftImpl<T extends DraftImpl<T>> implements Draft {
public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
protected final UUID id;
protected Map<UUID, DraftPlayer> players = new HashMap<UUID, DraftPlayer>();
@ -74,8 +74,8 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
@Override
public void addPlayer(Player player) {
DraftPlayer draftPlayer = new DraftPlayer(player);
players.put(draftPlayer.getId(), draftPlayer);
table.add(draftPlayer.getId());
players.put(player.getId(), draftPlayer);
table.add(player.getId());
}
@Override
@ -139,7 +139,7 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
}
protected void openBooster() {
if (sets.size() < boosterNum) {
if (boosterNum < sets.size()) {
for (DraftPlayer player: players.values()) {
player.setBooster(sets.get(boosterNum).createBooster());
}
@ -151,8 +151,8 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
for (DraftPlayer player: players.values()) {
if (player.getBooster().size() == 0)
return false;
player.getPlayer().pickCard(player.getBooster(), player.getDeck(), this);
player.setPicking();
player.getPlayer().pickCard(player.getBooster(), player.getDeck(), this);
}
while (!donePicking()) {
try {
@ -173,21 +173,6 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
return true;
}
@Override
public void start() {
while (boosterNum < sets.size()) {
openBooster();
while (pickCards()) {
if (boosterNum % 2 == 1)
passLeft();
else
passRight();
fireUpdatePlayersEvent();
}
}
startTournament();
}
@Override
public void addTableEventListener(Listener<TableEvent> listener) {
tableEventSource.addListener(listener);
@ -205,7 +190,7 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
@Override
public void firePickCardEvent(UUID playerId) {
playerQueryEventSource.pickCard(playerId, "Pick card", players.get(playerId).booster);
playerQueryEventSource.pickCard(playerId, "Pick card", players.get(playerId).booster, 20);
}
@Override
@ -214,6 +199,7 @@ public class DraftImpl<T extends DraftImpl<T>> implements Draft {
for (Card card: player.booster) {
if (card.getId().equals(cardId)) {
player.addPick(card);
player.booster.remove(card);
break;
}
}

View file

@ -41,7 +41,7 @@ public class DraftOptions implements Serializable {
protected String name;
protected String draftType;
protected List<ExpansionSet> sets;
protected List<ExpansionSet> sets = new ArrayList<ExpansionSet>();
protected List<String> playerTypes = new ArrayList<String>();
protected TimingOption timing;

View file

@ -76,12 +76,13 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri
this.max = max;
}
private PlayerQueryEvent(UUID playerId, String message, List<Card> booster, QueryType queryType) {
private PlayerQueryEvent(UUID playerId, String message, List<Card> booster, QueryType queryType, int time) {
super(playerId);
this.queryType = queryType;
this.message = message;
this.playerId = playerId;
this.booster = booster;
this.max = time;
}
public static PlayerQueryEvent askEvent(UUID playerId, String message) {
@ -127,8 +128,8 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri
return new PlayerQueryEvent(playerId, message, null, null, null, cards, QueryType.LOOK, 0, 0, false);
}
public static PlayerQueryEvent pickCard(UUID playerId, String message, List<Card> booster) {
return new PlayerQueryEvent(playerId, message, booster, QueryType.PICK_CARD);
public static PlayerQueryEvent pickCard(UUID playerId, String message, List<Card> booster, int time) {
return new PlayerQueryEvent(playerId, message, booster, QueryType.PICK_CARD, time);
}
public String getMessage() {

View file

@ -95,8 +95,8 @@ public class PlayerQueryEventSource implements EventSource<PlayerQueryEvent>, Se
dispatcher.fireEvent(PlayerQueryEvent.playXManaEvent(playerId, message));
}
public void pickCard(UUID playerId, String message, List<Card> booster) {
dispatcher.fireEvent(PlayerQueryEvent.pickCard(playerId, message, booster));
public void pickCard(UUID playerId, String message, List<Card> booster, int time) {
dispatcher.fireEvent(PlayerQueryEvent.pickCard(playerId, message, booster, time));
}
}