diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index 46adb20c06d..6fbdc1a4d5d 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -21,6 +21,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Multimaps; import forge.card.CardEdition.CardInSet; @@ -41,8 +42,9 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { // need this to obtain cardReference by name+set+artindex private final ListMultimap allCardsByName = Multimaps.newListMultimap(new TreeMap>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); - private final Map uniqueCardsByName = new TreeMap(String.CASE_INSENSITIVE_ORDER); + private final Map uniqueCardsByName = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); private final Map rulesByName; + private final Map facesByName = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); private static Map artPrefs = new HashMap(); private final List allCards = new ArrayList(); @@ -116,6 +118,16 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { public CardDb(Map rules, CardEdition.Collection editions0) { this.rulesByName = rules; this.editions = editions0; + + // create faces list from rules + for (final CardRules rule : rules.values() ) { + final ICardFace main = rule.getMainPart(); + facesByName.put(main.getName(), main); + final ICardFace other = rule.getMainPart(); + if (other != null) { + facesByName.put(other.getName(), other); + } + } } public void initialize(boolean logMissingPerEdition, boolean logMissingSummary) { @@ -461,6 +473,18 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { return uniqueCardsByName.values(); } + public PaperCard getUniqueByName(final String name) { + return uniqueCardsByName.get(name); + } + + public Collection getAllFaces() { + return facesByName.values(); + } + + public ICardFace getFaceByName(final String name) { + return facesByName.get(name); + } + @Override public List getAllCards() { return roAllCards;