diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index 787b5742c04..85a354f57f5 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -888,14 +888,16 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { @Override public int getArtCount(String cardName, String setCode) { + return getArtCount(cardName, setCode, null); + } + public int getArtCount(String cardName, String setCode, String functionalVariantName) { if (cardName == null || setCode == null) return 0; - Collection cardsInSet = getAllCards(cardName, new Predicate() { - @Override - public boolean apply(PaperCard card) { - return card.getEdition().equalsIgnoreCase(setCode); - } - }); + Predicate predicate = card -> card.getEdition().equalsIgnoreCase(setCode); + if(functionalVariantName != null && !functionalVariantName.equals(IPaperCard.NO_FUNCTIONAL_VARIANT)) { + predicate = Predicates.and(predicate, card -> functionalVariantName.equals(card.getFunctionalVariant())); + } + Collection cardsInSet = getAllCards(cardName, predicate); return cardsInSet.size(); } @@ -1159,7 +1161,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { } if (!hasBadSetInfo) { - int artCount = getArtCount(card.getName(), card.getEdition()); + int artCount = getArtCount(card.getName(), card.getEdition(), card.getFunctionalVariant()); sb.append(CardDb.NameSetSeparator).append(card.getEdition()); if (artCount >= IPaperCard.DEFAULT_ART_INDEX) { sb.append(CardDb.NameSetSeparator).append(card.getArtIndex()); // indexes start at 1 to match image file name conventions diff --git a/forge-core/src/main/java/forge/util/ImageUtil.java b/forge-core/src/main/java/forge/util/ImageUtil.java index e3bfaf4dacf..bf535e91207 100644 --- a/forge-core/src/main/java/forge/util/ImageUtil.java +++ b/forge-core/src/main/java/forge/util/ImageUtil.java @@ -5,6 +5,7 @@ import forge.StaticData; import forge.card.CardDb; import forge.card.CardRules; import forge.card.CardSplitType; +import forge.item.IPaperCard; import forge.item.PaperCard; import org.apache.commons.lang3.StringUtils; @@ -74,7 +75,7 @@ public class ImageUtil { final boolean hasManyPictures; final CardDb db = !card.isVariant() ? StaticData.instance().getCommonCards() : StaticData.instance().getVariantCards(); if (includeSet) { - cntPictures = db.getArtCount(card.getName(), edition); + cntPictures = db.getArtCount(card.getName(), edition, cp.getFunctionalVariant()); hasManyPictures = cntPictures > 1; } else { cntPictures = 1; @@ -149,6 +150,8 @@ public class ImageUtil { } } else if (CardSplitType.Split == cp.getRules().getSplitType()) { return card.getMainPart().getName() + card.getOtherPart().getName(); + } else if (!IPaperCard.NO_FUNCTIONAL_VARIANT.equals(cp.getFunctionalVariant())) { + return cp.getName() + " " + cp.getFunctionalVariant(); } return cp.getName(); }