From f6075b32cf39500be20b781878b3dd3fc18cde92 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 6 Aug 2015 15:29:50 +0200 Subject: [PATCH] * Cube Draft/Sealed - Fixed that cards where taken from promo/special sets if they also did exist in Core or Expansion sets. --- .../mage/cards/repository/CardRepository.java | 22 +++++++++++++++++++ Mage/src/mage/game/draft/DraftCube.java | 11 +++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java index 997e68430a..2f108bed58 100644 --- a/Mage/src/mage/cards/repository/CardRepository.java +++ b/Mage/src/mage/cards/repository/CardRepository.java @@ -44,7 +44,10 @@ import java.util.Random; import java.util.Set; import java.util.TreeSet; import java.util.concurrent.Callable; +import mage.cards.ExpansionSet; +import mage.cards.Sets; import mage.constants.CardType; +import mage.constants.SetType; import org.apache.log4j.Logger; /** @@ -297,6 +300,25 @@ public enum CardRepository { return null; } + public CardInfo findPreferedCoreExpansionCard(String name) { + List cards = findCards(name); + if (!cards.isEmpty()) { + CardInfo cardInfo = cards.get(random.nextInt(cards.size())); + ExpansionSet set = Sets.getInstance().get(cardInfo.getSetCode()); + if (set.getSetType().equals(SetType.EXPANSION) || set.getSetType().equals(SetType.CORE)) { + return cardInfo; + } + for (CardInfo cardInfoToCheck : cards) { + set = Sets.getInstance().get(cardInfoToCheck.getSetCode()); + if (set.getSetType().equals(SetType.CORE) || set.getSetType().equals(SetType.EXPANSION)) { + return cardInfoToCheck; + } + } + return cardInfo; + } + return null; + } + public List findCards(String name) { try { QueryBuilder queryBuilder = cardDao.queryBuilder(); diff --git a/Mage/src/mage/game/draft/DraftCube.java b/Mage/src/mage/game/draft/DraftCube.java index 40f69ffcbb..cb17656cca 100644 --- a/Mage/src/mage/game/draft/DraftCube.java +++ b/Mage/src/mage/game/draft/DraftCube.java @@ -43,6 +43,7 @@ import org.apache.log4j.Logger; public abstract class DraftCube { public class CardIdentity { + private String name; private String extension; @@ -69,7 +70,7 @@ public abstract class DraftCube { } private static final Logger logger = Logger.getLogger(DraftCube.class); - + private static final Random rnd = new Random(); private final String name; private final int boosterSize = 15; @@ -88,13 +89,13 @@ public abstract class DraftCube { public List getCubeCards() { return cubeCards; } - + public List createBooster() { List booster = new ArrayList<>(); if (leftCubeCards.isEmpty()) { leftCubeCards.addAll(cubeCards); } - + for (int i = 0; i < boosterSize; i++) { boolean done = false; int notValid = 0; @@ -111,9 +112,9 @@ public abstract class DraftCube { cardInfo = cardList.get(0); } } else { - cardInfo = CardRepository.instance.findCard(cardId.getName()); + cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(cardId.getName()); } - + if (cardInfo != null) { booster.add(cardInfo.getCard()); done = true;