*Draft - Non hidden picked cards go to the deck. Hidden cards to sideboard.

This commit is contained in:
LevelX2 2014-11-23 18:43:31 +01:00
parent b0238b402e
commit c22b54d262
13 changed files with 53 additions and 22 deletions

View file

@ -31,6 +31,7 @@ package mage.game.draft;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import mage.MageItem;
import mage.cards.ExpansionSet;
@ -54,7 +55,7 @@ public interface Draft extends MageItem, Serializable {
List<ExpansionSet> getSets();
int getBoosterNum();
int getCardNum();
boolean addPick(UUID playerId, UUID cardId);
boolean addPick(UUID playerId, UUID cardId, Set<UUID> hiddenCards);
void start();
boolean isStarted();
void setStarted();

View file

@ -32,6 +32,7 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import mage.cards.Card;
import mage.cards.ExpansionSet;
@ -180,7 +181,7 @@ public abstract class DraftImpl implements Draft {
@Override
public void autoPick(UUID playerId) {
this.addPick(playerId, players.get(playerId).getBooster().get(0).getId());
this.addPick(playerId, players.get(playerId).getBooster().get(0).getId(), null);
}
protected void passLeft() {
@ -313,12 +314,12 @@ public abstract class DraftImpl implements Draft {
}
@Override
public boolean addPick(UUID playerId, UUID cardId) {
public boolean addPick(UUID playerId, UUID cardId, Set<UUID> hiddenCards) {
DraftPlayer player = players.get(playerId);
if (player.isPicking()) {
for (Card card: player.booster) {
if (card.getId().equals(cardId)) {
player.addPick(card);
player.addPick(card, hiddenCards);
player.booster.remove(card);
break;
}

View file

@ -29,7 +29,9 @@
package mage.game.draft;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import mage.cards.Card;
import mage.cards.ExpansionSet;
@ -48,11 +50,13 @@ public class DraftPlayer {
protected List<Card> booster;
protected boolean picking;
protected boolean joined = false;
protected Set<UUID> hiddenCards;
public DraftPlayer(Player player) {
id = UUID.randomUUID();
this.player = player;
this.deck = new Deck();
hiddenCards = new HashSet<>();
}
public UUID getId() {
@ -63,12 +67,30 @@ public class DraftPlayer {
return player;
}
public void prepareDeck() {
if (!hiddenCards.isEmpty()) {
Set<Card> cardsToDeck = new HashSet<>();
for(Card card: deck.getSideboard()) {
if (!hiddenCards.contains(card.getId())) {
cardsToDeck.add(card);
}
}
for(Card card: cardsToDeck) {
deck.getSideboard().remove(card);
deck.getCards().add(card);
}
}
}
public Deck getDeck() {
return deck;
}
public void addPick(Card card) {
public void addPick(Card card, Set<UUID> hiddenCards) {
deck.getSideboard().add(card);
if (hiddenCards != null) {
this.hiddenCards = hiddenCards;
}
synchronized(booster) {
booster.remove(card);
}