From 42cf0def0fdba3703498c46c1209a30874d40c57 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 13 Jan 2014 18:21:29 +0000 Subject: [PATCH] rollback changes to Deck, ManaCost, StorageBase, CardPool --- .../main/java/forge/card/mana/ManaCost.java | 66 ++------------ .../src/main/java/forge/deck/CardPool.java | 35 -------- forge-core/src/main/java/forge/deck/Deck.java | 86 +++---------------- .../java/forge/util/storage/StorageBase.java | 5 -- .../src/main/java/forge/game/GameFormat.java | 22 +++-- .../controllers/CEditorDraftingProcess.java | 1 - .../itemmanager/filters/DeckColorFilter.java | 16 ++-- .../toolbox/itemmanager/views/ItemColumn.java | 8 +- 8 files changed, 43 insertions(+), 196 deletions(-) diff --git a/forge-core/src/main/java/forge/card/mana/ManaCost.java b/forge-core/src/main/java/forge/card/mana/ManaCost.java index b4aa275464f..f84d1d86259 100644 --- a/forge-core/src/main/java/forge/card/mana/ManaCost.java +++ b/forge-core/src/main/java/forge/card/mana/ManaCost.java @@ -22,9 +22,6 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; -import forge.card.ColorSet; -import forge.card.MagicColor; - /** *

* CardManaCost class. @@ -49,20 +46,14 @@ public final class ManaCost implements Comparable, Iterable 0 ? new ManaCost(cntColorless) : NO_COST; } @@ -95,47 +86,8 @@ public final class ManaCost implements Comparable, Iterable shardsTemp = new ArrayList(); - this.hasNoCost = false; - if (colorProfile == MagicColor.COLORLESS) { - shardsTemp.add(ManaCostShard.X); - } - else { - ColorSet colorSet = ColorSet.fromMask(colorProfile); - if (colorSet.hasWhite()) { - shardsTemp.add(ManaCostShard.WHITE); - } - if (colorSet.hasBlue()) { - shardsTemp.add(ManaCostShard.BLUE); - } - if (colorSet.hasBlack()) { - shardsTemp.add(ManaCostShard.BLACK); - } - if (colorSet.hasRed()) { - shardsTemp.add(ManaCostShard.RED); - } - if (colorSet.hasGreen()) { - shardsTemp.add(ManaCostShard.GREEN); - } - } - this.genericCost = 0; + this.genericCost = parser.getTotalColorlessCost(); // collect generic mana + // here sealClass(shardsTemp); } @@ -293,10 +245,6 @@ public final class ManaCost implements Comparable, Iterable { - /** - * Instantiates a new deck section. - */ public CardPool() { super(PaperCard.class); } - /** - * Instantiates a new deck section. - * - * @param cards the cards - */ public CardPool(final Iterable> cards) { this(); this.addAll(cards); } - - /** - * Adds the card. - * - * @param cardName - * the card name - * @param setCode - * the set code - */ public void add(final String cardName, final String setCode) { this.add(cardName, setCode, -1, 1); } - /** - * Adds the card. - * - * @param cardName - * the card name - * @param setCode - * the set code - * @param amount - * the amount of cards to add - */ public void add(final String cardName, final String setCode, final int amount) { this.add(cardName, setCode, -1, amount); } - /** - * Adds the card. - * - * @param cardName the card name - * @param setCode the set code - * @param artIndex the card art index, -1 for random - * @param amount the amount - */ public void add(final String cardName, final String setCode, final int artIndex, final int amount) { PaperCard cp = StaticData.instance().getCommonCards().tryGetCard(cardName, setCode, artIndex); if ( cp == null ) diff --git a/forge-core/src/main/java/forge/deck/Deck.java b/forge-core/src/main/java/forge/deck/Deck.java index a81cc1ae566..423c09e6d49 100644 --- a/forge-core/src/main/java/forge/deck/Deck.java +++ b/forge-core/src/main/java/forge/deck/Deck.java @@ -34,8 +34,8 @@ import com.google.common.base.Function; import com.google.common.base.Predicate; import forge.card.CardDb; +import forge.card.ColorSet; import forge.card.MagicColor; -import forge.card.mana.ManaCost; import forge.deck.io.DeckFileHeader; import forge.deck.io.DeckSerializer; import forge.item.PaperCard; @@ -59,9 +59,6 @@ import forge.util.ItemPoolView; public class Deck extends DeckBase implements Iterable> { private final Map parts = new EnumMap(DeckSection.class); private final Set tags = new TreeSet(String.CASE_INSENSITIVE_ORDER); - private ManaCost color; - private String format; - private int formatCompare; // gameType is from Constant.GameType, like GameType.Regular /** @@ -244,9 +241,6 @@ public class Deck extends DeckBase implements Iterable save() { - this.color = null; //ensure color and format are recalculated - this.format = null; - final List out = new ArrayList(); out.add(String.format("[metadata]")); @@ -289,75 +283,23 @@ public class Deck extends DeckBase implements Iterable deckEntry : this) { - switch (deckEntry.getKey()) { - case Main: - case Sideboard: - case Commander: - for (Entry poolEntry : deckEntry.getValue()) { - colorProfile |= poolEntry.getKey().getRules().getColor().getColor(); - } - break; - default: - break; //ignore other sections + for (Entry deckEntry : this) { + switch (deckEntry.getKey()) { + case Main: + case Sideboard: + case Commander: + for (Entry poolEntry : deckEntry.getValue()) { + colorProfile |= poolEntry.getKey().getRules().getColor().getColor(); } - } - color = ManaCost.fromColorProfile(colorProfile); - } - return color; - } - - public String getFormat(Map> formatPredicates) { - if (format == null) { - formatCompare = 0; //build format compare value, with higher values for being valid in a more recent format - int value = (int)Math.pow(2, formatPredicates.size() - 1); - StringBuilder builder = new StringBuilder(); - - formatLoop: - for (Entry> format : formatPredicates.entrySet()) { - for (Entry deckEntry : this) { - switch (deckEntry.getKey()) { - case Main: - case Sideboard: - case Commander: - for (Entry poolEntry : deckEntry.getValue()) { - if (!format.getValue().apply(poolEntry.getKey())) { - value /= 2; - continue formatLoop; //if found card that's not legal in this format, move to next format - } - } - break; - default: - break; //ignore other sections - } - } - //add format if reached this point - if (builder.length() > 0) { - builder.append(", "); - } - builder.append(format.getKey()); - - formatCompare += value; //increment format compare value - value /= 2; - } - - if (builder.length() > 0) { - format = builder.toString(); - } - else { - format = "(none)"; + break; + default: + break; //ignore other sections } } - return format; - } - - public int getFormatCompare(Map> formatPredicates) { - getFormat(formatPredicates); //ensure formatCompare defined - return formatCompare; + return ColorSet.fromMask(colorProfile); } //create predicate that applys a card predicate to all cards in deck diff --git a/forge-core/src/main/java/forge/util/storage/StorageBase.java b/forge-core/src/main/java/forge/util/storage/StorageBase.java index a74694c0e6d..4ff9874a8d8 100644 --- a/forge-core/src/main/java/forge/util/storage/StorageBase.java +++ b/forge-core/src/main/java/forge/util/storage/StorageBase.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import java.util.Map.Entry; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; @@ -66,10 +65,6 @@ public class StorageBase implements IStorage { return new ArrayList(this.map.keySet()); } - public Iterable> entrySet() { - return this.map.entrySet(); - } - @Override public Iterator iterator() { return this.map.values().iterator(); diff --git a/forge-game/src/main/java/forge/game/GameFormat.java b/forge-game/src/main/java/forge/game/GameFormat.java index f03fd6d1bf7..b2d544ecccf 100644 --- a/forge-game/src/main/java/forge/game/GameFormat.java +++ b/forge-game/src/main/java/forge/game/GameFormat.java @@ -21,10 +21,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import com.google.common.base.Function; import com.google.common.base.Predicate; @@ -33,6 +30,7 @@ import com.google.common.collect.Lists; import forge.StaticData; import forge.card.CardEdition; +import forge.deck.Deck; import forge.item.PaperCard; import forge.item.IPaperCard; import forge.util.FileSection; @@ -73,6 +71,8 @@ public class GameFormat implements Comparable { this(fName, sets, bannedCards, 0); } + public static final GameFormat NoFormat = new GameFormat("(none)", null, null, Integer.MAX_VALUE); + public GameFormat(final String fName, final Iterable sets, final List bannedCards, int compareIdx) { this.index = compareIdx; this.name = fName; @@ -219,15 +219,8 @@ public class GameFormat implements Comparable { } public static class Collection extends StorageBase { - private final Map> formatPredicates; - public Collection(StorageReaderBase reader) { super("Format collections", reader); - - formatPredicates = new HashMap>(); - for (Entry format : this.entrySet()) { - formatPredicates.put(format.getKey(), format.getValue().getFilterRules()); //allow reprints - } } public GameFormat getStandard() { @@ -246,8 +239,13 @@ public class GameFormat implements Comparable { return this.map.get(format); } - public Map> getFormatPredicates() { - return this.formatPredicates; + public GameFormat getFormatOfDeck(Deck deck) { + for(GameFormat gf : this) { + if ( Deck.createPredicate(gf.getFilterRules()).apply(deck) ) + return gf; + } + + return NoFormat; } } diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java index e78bc9c3b5f..e55a0c97b30 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java @@ -22,7 +22,6 @@ import java.util.Map.Entry; import forge.Singletons; import forge.card.CardEdition; import forge.card.MagicColor; -import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckGroup; import forge.deck.DeckSection; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java index 0ce41b3b86b..58c5d9d92f1 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java @@ -40,7 +40,7 @@ public class DeckColorFilter extends StatTypeFilter { return new Predicate() { @Override public boolean apply(Deck input) { - byte colorProfile = input.getColor().getColorProfile(); + byte colorProfile = input.getColor().getColor(); if (colorProfile == 0) { return buttonMap.get(StatTypes.DECK_COLORLESS).getSelected(); } @@ -73,43 +73,43 @@ public class DeckColorFilter extends StatTypeFilter { private static final Predicate IS_WHITE = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().hasColor(MagicColor.WHITE); + return deck.getColor().hasAnyColor(MagicColor.WHITE); } }; private static final Predicate IS_BLUE = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().hasColor(MagicColor.BLUE); + return deck.getColor().hasAnyColor(MagicColor.BLUE); } }; public static final Predicate IS_BLACK = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().hasColor(MagicColor.BLACK); + return deck.getColor().hasAnyColor(MagicColor.BLACK); } }; public static final Predicate IS_RED = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().hasColor(MagicColor.RED); + return deck.getColor().hasAnyColor(MagicColor.RED); } }; public static final Predicate IS_GREEN = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().hasColor(MagicColor.GREEN); + return deck.getColor().hasAnyColor(MagicColor.GREEN); } }; private static final Predicate IS_COLORLESS = new Predicate() { @Override public boolean apply(final Deck deck) { - return deck.getColor().getColorProfile() == 0; + return deck.getColor().getColor() == 0; } }; private static final Predicate IS_MULTICOLOR = new Predicate() { @Override public boolean apply(final Deck deck) { - return BinaryUtil.bitCount(deck.getColor().getColorProfile()) > 1; + return BinaryUtil.bitCount(deck.getColor().getColor()) > 1; } }; diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumn.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumn.java index b89a118c332..4c54a3b2580 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumn.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ItemColumn.java @@ -23,7 +23,6 @@ import java.util.regex.Pattern; import javax.swing.table.TableColumn; import com.google.common.base.Function; - import forge.Singletons; import forge.card.CardAiHints; import forge.card.CardEdition; @@ -406,7 +405,8 @@ public class ItemColumn extends TableColumn { if (deck == null) { return -1; } - return deck.getFormatCompare(Singletons.getModel().getFormats().getFormatPredicates()); + return Singletons.getModel().getFormats().getFormatOfDeck(deck).getIndex(); + } }, new Function, Object>() { @@ -416,7 +416,7 @@ public class ItemColumn extends TableColumn { if (deck == null) { return null; } - return deck.getFormat(Singletons.getModel().getFormats().getFormatPredicates()); + return Singletons.getModel().getFormats().getFormatOfDeck(deck); } }), DECK_MAIN("Main", "Main Deck", 35, 35, 35, SortState.ASC, new IntegerRenderer(), @@ -525,7 +525,7 @@ public class ItemColumn extends TableColumn { private static Deck toDeck(final InventoryItem i) { return i instanceof Deck ? ((Deck) i) : null; } - private static ManaCost toDeckColor(final InventoryItem i) { + private static ColorSet toDeckColor(final InventoryItem i) { return i instanceof Deck ? ((Deck) i).getColor() : null; } private static int toDeckCount(final InventoryItem i, DeckSection section) {