From d554a7ee97f4c3bb4e0e7dfb90a2fd34ae77f889 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 29 Mar 2021 13:35:20 +0800 Subject: [PATCH] add getUniqueCardsNoAlt for mobile --- forge-core/src/main/java/forge/card/CardDb.java | 13 +++++++++++-- forge-gui-mobile/src/forge/deck/FDeckEditor.java | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index e7d7e3184f0..bc0fa33cf07 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -56,10 +56,11 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { public final static String foilSuffix = "+"; public final static char NameSetSeparator = '|'; - // need this to obtain cardReference by name+set+artindex - private final ListMultimap allCardsByName = Multimaps.newListMultimap(new TreeMap<>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); // for deck editor only private final ListMultimap allCardsByNameNoAlt = Multimaps.newListMultimap(new TreeMap<>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.arrayLists()); + private final Map uniqueCardsByNameNoAlt = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); + // 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 = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); private final Map rulesByName; private final Map facesByName = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); @@ -275,9 +276,13 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { private void reIndex() { uniqueCardsByName.clear(); + uniqueCardsByNameNoAlt.clear(); for (Entry> kv : allCardsByName.asMap().entrySet()) { uniqueCardsByName.put(kv.getKey(), getFirstWithImage(kv.getValue())); } + for (Entry> kv : allCardsByNameNoAlt.asMap().entrySet()) { + uniqueCardsByNameNoAlt.put(kv.getKey(), getFirstWithImage(kv.getValue())); + } } private static PaperCard getFirstWithImage(final Collection cards) { @@ -565,6 +570,10 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { return uniqueCardsByName.values(); } + public Collection getUniqueCardsNoAlt() { + return uniqueCardsByNameNoAlt.values(); + } + public PaperCard getUniqueByName(final String name) { return uniqueCardsByName.get(getName(name)); } diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index b9ceaeced9e..a63bc7a4d00 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -1156,7 +1156,7 @@ public class FDeckEditor extends TabPageScreen { // fall through to below default: if (cardManager.getWantUnique()) { - cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getUniqueCards(), PaperCard.class), additionalFilter), true); + cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getUniqueCardsNoAlt(), PaperCard.class), additionalFilter), true); } else { cardManager.setPool(editorType.applyCardFilter(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCardsNoAlt(), PaperCard.class), additionalFilter), true);