From ff31718839895df4211bae48db0209ad75ee591c Mon Sep 17 00:00:00 2001 From: "Jamin W. Collins" Date: Tue, 3 Mar 2020 21:18:38 -0700 Subject: [PATCH] correct how collectorNumber is located The existing logic will always return the first match for a given card name, even if there are multiple different printings of the same card name within a set. This change aligns the collectorNumber with the alternate art index. Signed-off-by: Jamin W. Collins --- forge-core/src/main/java/forge/card/CardDb.java | 8 ++++++-- forge-gui/src/main/java/forge/util/ImageFetcher.java | 3 ++- 2 files changed, 8 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 22fe40aa112..7fcfbfd2a49 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -312,14 +312,18 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { return tryGetCard(request); } - public String getCardCollectorNumber(String cardName, String reqEdition) { + public String getCardCollectorNumber(String cardName, String reqEdition, int artIndex) { cardName = getName(cardName); CardEdition edition = editions.get(reqEdition); if (edition == null) return null; + int numMatches = 0; for (CardInSet card : edition.getCards()) { if (card.name.equalsIgnoreCase(cardName)) { - return card.collectorNumber; + numMatches += 1; + if (numMatches == artIndex) { + return card.collectorNumber; + } } } return null; diff --git a/forge-gui/src/main/java/forge/util/ImageFetcher.java b/forge-gui/src/main/java/forge/util/ImageFetcher.java index 323b9c39189..0ab7b0ed0e8 100644 --- a/forge-gui/src/main/java/forge/util/ImageFetcher.java +++ b/forge-gui/src/main/java/forge/util/ImageFetcher.java @@ -50,8 +50,9 @@ public abstract class ImageFetcher { setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace)); downloadUrls.add(setDownload.toString()); + int artIndex = Integer.parseInt(imageKey.split("\\|")[2]); final StaticData data = StaticData.instance(); - final String cardNum = data.getCommonCards().getCardCollectorNumber(paperCard.getName(), paperCard.getEdition()); + final String cardNum = data.getCommonCards().getCardCollectorNumber(paperCard.getName(), paperCard.getEdition(), artIndex); if (cardNum != null) { String suffix = ""; if (paperCard.getRules().getOtherPart() != null) {