added draft timing

This commit is contained in:
BetaSteward 2011-01-12 23:44:04 -05:00
parent 982ee064a6
commit cb73d4a25d
11 changed files with 419 additions and 31 deletions

View file

@ -30,8 +30,10 @@ package mage.game.draft;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
import mage.MageItem;
import mage.cards.ExpansionSet;
import mage.game.events.Listener;
import mage.game.events.PlayerQueryEvent;
import mage.game.events.TableEvent;
@ -46,6 +48,9 @@ public interface Draft extends MageItem, Serializable {
public void addPlayer(Player player);
public Collection<DraftPlayer> getPlayers();
public DraftPlayer getPlayer(UUID playerId);
public List<ExpansionSet> getSets();
public int getBoosterNum();
public int getCardNum();
public void addPick(UUID playerId, UUID cardId);
public void start();
public void leave(UUID playerId);

View file

@ -37,6 +37,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import mage.cards.Card;
import mage.cards.ExpansionSet;
import mage.game.draft.DraftOptions.TimingOption;
import mage.game.events.Listener;
import mage.game.events.PlayerQueryEvent;
import mage.game.events.PlayerQueryEventSource;
@ -57,6 +58,9 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
protected PlayerList table = new PlayerList();
protected List<ExpansionSet> sets;
protected int boosterNum = 0;
protected int cardNum = 0;
protected TimingOption timing;
protected int[] times = {40, 40, 35, 30, 25, 25, 20, 20, 15, 10, 10, 5, 5, 5, 5};
protected transient TableEventSource tableEventSource = new TableEventSource();
protected transient PlayerQueryEventSource playerQueryEventSource = new PlayerQueryEventSource();
@ -64,6 +68,7 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
public DraftImpl(DraftOptions options) {
id = UUID.randomUUID();
this.sets = options.getSets();
this.timing = options.getTiming();
}
@Override
@ -88,6 +93,21 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
return players.get(playerId);
}
@Override
public List<ExpansionSet> getSets() {
return sets;
}
@Override
public int getBoosterNum() {
return boosterNum;
}
@Override
public int getCardNum() {
return cardNum;
}
@Override
public void leave(UUID playerId) {
//TODO: implement this
@ -95,7 +115,7 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
@Override
public void autoPick(UUID playerId) {
//TODO: implement this
this.addPick(playerId, players.get(playerId).getBooster().get(0).getId());
}
protected void passLeft() {
@ -145,9 +165,12 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
}
}
boosterNum++;
cardNum = 1;
fireUpdatePlayersEvent();
}
protected boolean pickCards() {
cardNum++;
for (DraftPlayer player: players.values()) {
if (player.getBooster().size() == 0)
return false;
@ -195,7 +218,11 @@ public abstract class DraftImpl<T extends DraftImpl<T>> implements Draft {
@Override
public void firePickCardEvent(UUID playerId) {
playerQueryEventSource.pickCard(playerId, "Pick card", players.get(playerId).booster, 20);
DraftPlayer player = players.get(playerId);
if (cardNum > 15)
cardNum = 15;
int time = times[cardNum - 1] * timing.getFactor();
playerQueryEventSource.pickCard(playerId, "Pick card", player.getBooster(), time);
}
@Override

View file

@ -46,7 +46,19 @@ public class DraftOptions implements Serializable {
protected TimingOption timing;
public enum TimingOption {
REGULAR, BEGINNER, NONE
REGULAR (1),
BEGINNER (2),
NONE (0);
private int factor;
TimingOption(int factor) {
this.factor = factor;
}
public int getFactor() {
return this.factor;
}
}
public DraftOptions(String name) {