Disambiguate requested print names

This commit is contained in:
Jetz
2024-06-07 21:59:59 -04:00
parent 8c8c8a779b
commit 279e1e520e
2 changed files with 13 additions and 8 deletions

View File

@@ -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<PaperCard> cardsInSet = getAllCards(cardName, new Predicate<PaperCard>() {
@Override
public boolean apply(PaperCard card) {
return card.getEdition().equalsIgnoreCase(setCode);
}
});
Predicate<PaperCard> 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<PaperCard> 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

View File

@@ -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();
}