diff --git a/src/main/java/forge/Gui_WinLose.java b/src/main/java/forge/Gui_WinLose.java index 3a6e085b69f..456ef981080 100644 --- a/src/main/java/forge/Gui_WinLose.java +++ b/src/main/java/forge/Gui_WinLose.java @@ -394,8 +394,8 @@ public class Gui_WinLose extends JFrame implements NewConstants { ListChooser ch = new ListChooser("Choose prize booster format", 1, SetUtils.getFormats()); ch.show(); GameFormat selected = ch.getSelectedValue(); - - ArrayList cardsWon = model.quest.getCards().addCards(selected.getFilter()); + + ArrayList cardsWon = model.quest.getCards().addCards(selected.getFilterPrinted()); ImageIcon icon = getIcon("BookIcon.png"); CardListViewer c = new CardListViewer("Booster", "You have won the following new cards", cardsWon, icon); c.show(); @@ -443,7 +443,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { if (wonMatch && model.qa != null) { model.quest.addQuestsPlayed(); - ArrayList questRewardCards = model.qa.getCardRewardList(); + List questRewardCards = model.qa.getCardRewardList(); long questRewardCredits = model.qa.getCreditsReward(); StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/forge/card/CardDb.java b/src/main/java/forge/card/CardDb.java index 06aa99db463..f8c5adbc304 100644 --- a/src/main/java/forge/card/CardDb.java +++ b/src/main/java/forge/card/CardDb.java @@ -157,6 +157,6 @@ public final class CardDb { return uniqueCards.values(); } - public List getAllCards() { return allCardsFlat; } + public Iterable getAllCards() { return allCardsFlat; } } diff --git a/src/main/java/forge/card/CardManaCostShard.java b/src/main/java/forge/card/CardManaCostShard.java index 6a1127d300a..258db3415e5 100644 --- a/src/main/java/forge/card/CardManaCostShard.java +++ b/src/main/java/forge/card/CardManaCostShard.java @@ -7,7 +7,7 @@ public class CardManaCostShard { public final float cmpc; private final String stringValue; public final String imageKey; - + protected CardManaCostShard(final int value, final String sValue) { this(value, sValue, sValue); } @@ -20,17 +20,19 @@ public class CardManaCostShard { imageKey = imgKey; } - public interface Atom { + /** A bitmask to represent any mana symbol as an integer. */ + public abstract static class Atom { //int COLORLESS = 1 << 0; - int WHITE = 1 << 1; - int BLUE = 1 << 2; - int BLACK = 1 << 3; - int RED = 1 << 4; - int GREEN = 1 << 5; + public final static int WHITE = 1 << 1; + public final static int BLUE = 1 << 2; + public final static int BLACK = 1 << 3; + public final static int RED = 1 << 4; + public final static int GREEN = 1 << 5; - int IS_X = 1 << 8; - int OR_2_COLORLESS = 1 << 9; - int OR_2_LIFE = 1 << 10; + public final static int IS_X = 1 << 8; + public final static int OR_2_COLORLESS = 1 << 9; + public final static int OR_2_LIFE = 1 << 10; + public final static int IS_SNOW = 1 << 11; } @@ -44,6 +46,7 @@ public class CardManaCostShard { * while unboxed values will lay on stack, which is faster */ public static final CardManaCostShard X = new CardManaCostShard(Atom.IS_X, "X"); + public static final CardManaCostShard S = new CardManaCostShard(Atom.IS_SNOW, "S"); public static final CardManaCostShard WHITE = new CardManaCostShard(Atom.WHITE, "W"); public static final CardManaCostShard BLUE = new CardManaCostShard(Atom.BLUE, "U"); diff --git a/src/main/java/forge/game/GameFormat.java b/src/main/java/forge/game/GameFormat.java index 592e5fa0c67..7abae974703 100644 --- a/src/main/java/forge/game/GameFormat.java +++ b/src/main/java/forge/game/GameFormat.java @@ -19,7 +19,8 @@ public final class GameFormat { private final List allowedSetCodes; private final List bannedCardNames; - private final Predicate filter; + private final Predicate filterRules; + private final Predicate filterPrinted; public GameFormat(final String fName, final List sets, final List bannedCards) @@ -27,11 +28,21 @@ public final class GameFormat { name = fName; allowedSetCodes = Collections.unmodifiableList(sets); bannedCardNames = Collections.unmodifiableList(bannedCards); - filter = buildFilter(); + filterRules = buildFilterRules(); + filterPrinted = buildFilterPritned(); } - private Predicate buildFilter() { + private Predicate buildFilterPritned() { + Predicate banNames = CardPrinted.Predicates.namesExcept(bannedCardNames); + Predicate allowSets = allowedSetCodes == null || allowedSetCodes.isEmpty() + ? CardPrinted.Predicates.Presets.isTrue + : CardPrinted.Predicates.printedInSets(allowedSetCodes, true); + return Predicate.and(banNames, allowSets); + } + + + private Predicate buildFilterRules() { Predicate banNames = CardPrinted.Predicates.namesExcept(bannedCardNames); Predicate allowSets = allowedSetCodes == null || allowedSetCodes.isEmpty() ? CardPrinted.Predicates.Presets.isTrue @@ -40,7 +51,8 @@ public final class GameFormat { } public String getName() { return name; } - public Predicate getFilter() { return filter; } + public Predicate getFilterRules() { return filterRules; } + public Predicate getFilterPrinted() { return filterPrinted; } @Override public String toString() diff --git a/src/main/java/forge/gui/deckeditor/FilterNameTypeSetPanel.java b/src/main/java/forge/gui/deckeditor/FilterNameTypeSetPanel.java index 7cfcd3261d2..c708c4da038 100644 --- a/src/main/java/forge/gui/deckeditor/FilterNameTypeSetPanel.java +++ b/src/main/java/forge/gui/deckeditor/FilterNameTypeSetPanel.java @@ -98,7 +98,7 @@ public class FilterNameTypeSetPanel extends JComponent{ if (selected instanceof CardSet) { rules.add(CardPrinted.Predicates.printedInSets(((CardSet) selected).getCode())); } else if (selected instanceof GameFormat) { - rules.add(((GameFormat) selected).getFilter()); + rules.add(((GameFormat) selected).getFilterRules()); } } diff --git a/src/main/java/forge/quest/data/QuestData.java b/src/main/java/forge/quest/data/QuestData.java index 6515b217e7f..901a23c6383 100644 --- a/src/main/java/forge/quest/data/QuestData.java +++ b/src/main/java/forge/quest/data/QuestData.java @@ -123,7 +123,7 @@ public final class QuestData { public void newGame(final int diff, final String m0de, final boolean standardStart) { setDifficulty(diff); - Predicate filter = standardStart ? SetUtils.getStandard().getFilter() : CardPrinted.Predicates.Presets.isTrue; + Predicate filter = standardStart ? SetUtils.getStandard().getFilterPrinted() : CardPrinted.Predicates.Presets.isTrue; myCards.setupNewGameCardPool(filter, diff); credits = QuestPreferences.getStartingCredits();