transformed token image

This commit is contained in:
Hans Mackowiak
2025-05-06 07:40:24 +02:00
committed by Chris H
parent 3605b4e34e
commit 9caa024fa5
3 changed files with 24 additions and 17 deletions

View File

@@ -213,20 +213,17 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard {
// InventoryItem
@Override
public String getImageKey(boolean altState) {
if (hasBackFace()) {
String edCode = edition != null ? "_" + edition.getCode().toLowerCase() : "";
if (altState) {
String name = ImageKeys.getTokenKey(cardRules.getOtherPart().getName().toLowerCase().replace(" token", ""));
name.replace(" ", "_");
return name + edCode;
String suffix = "";
if (hasBackFace() && altState) {
if (collectorNumber != null && !collectorNumber.isEmpty() && edition != null) {
String name = cardRules.getOtherPart().getName().toLowerCase().replace(" token", "").replace(" ", "_");
return ImageKeys.getTokenKey(String.format("%s|%s|%s%s", name, edition.getCode(), collectorNumber, ImageKeys.BACKFACE_POSTFIX));
} else {
String name = ImageKeys.getTokenKey(cardRules.getMainPart().getName().toLowerCase().replace(" token", ""));
name.replace(" ", "_");
return name + edCode;
suffix = ImageKeys.BACKFACE_POSTFIX;
}
}
int idx = MyRandom.getRandom().nextInt(artIndex);
return getImageKey(idx);
return getImageKey(idx) + suffix;
}
public String getImageKey(int artIndex) {

View File

@@ -197,9 +197,11 @@ public class ImageUtil {
langCode, versionParam, faceParam);
}
public static String getScryfallTokenDownloadUrl(String collectorNumber, String setCode, String langCode) {
public static String getScryfallTokenDownloadUrl(String collectorNumber, String setCode, String langCode, String faceParam) {
String versionParam = "normal";
String faceParam = "";
if (!faceParam.isEmpty()) {
faceParam = (faceParam.equals("back") ? "&face=back" : "&face=front");
}
return String.format("%s/%s/%s?format=image&version=%s%s", setCode, collectorNumber,
langCode, versionParam, faceParam);
}

View File

@@ -129,6 +129,7 @@ public abstract class ImageFetcher {
boolean useArtCrop = "Crop".equals(FModel.getPreferences().getPref(ForgePreferences.FPref.UI_CARD_ART_FORMAT));
final String prefix = imageKey.substring(0, 2);
File destFile = null;
String face = "";
if (prefix.equals(ImageKeys.CARD_PREFIX)) {
PaperCard paperCard = ImageUtil.getPaperCardFromImageKey(imageKey);
if (paperCard == null) {
@@ -144,7 +145,6 @@ public abstract class ImageFetcher {
return;
String imagePath = ImageUtil.getImageRelativePath(paperCard, "", true, false);
final boolean hasSetLookup = ImageKeys.hasSetLookup(imagePath);
String face = "";
if (imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX)) {
face = "back";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_W)) {
@@ -228,7 +228,12 @@ public abstract class ImageFetcher {
this.getScryfallDownloadURL(paperCard, face, useArtCrop, hasSetLookup, filename, downloadUrls);
}
} else if (prefix.equals(ImageKeys.TOKEN_PREFIX)) {
String[] tempdata = imageKey.substring(2).split("\\|"); //We want to check the edition first.
String tmp = imageKey;
if (tmp.endsWith(ImageKeys.BACKFACE_POSTFIX)) {
face = "back";
tmp = tmp.substring(0, tmp.length() - ImageKeys.BACKFACE_POSTFIX.length());
}
String[] tempdata = tmp.substring(2).split("\\|"); //We want to check the edition first.
String tokenName = tempdata[0];
String setCode = tempdata[1];
@@ -238,6 +243,9 @@ public abstract class ImageFetcher {
sb.append(tempdata[2]).append("_");
}
sb.append(tokenName);
if (tempdata.length <= 2 && !face.isEmpty()) {
sb.append("_").append(face);
}
sb.append(".jpg");
final String filename = sb.toString();
@@ -264,7 +272,7 @@ public abstract class ImageFetcher {
String tokenCode = edition.getTokensCode();
String langCode = edition.getCardsLangCode();
// just assume the CNr from the token image is valid
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tempdata[2], tokenCode, langCode));
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tempdata[2], tokenCode, langCode, face));
} else if (!allTokens.isEmpty()) {
// This loop is going to try to download all the arts until it finds one
// This is a bit wrong since it _should_ just be trying to get the one with the appropriate collector number
@@ -282,7 +290,7 @@ public abstract class ImageFetcher {
continue;
}
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tis.collectorNumber(), tokenCode, langCode));
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tis.collectorNumber(), tokenCode, langCode, face));
}
}
@@ -347,4 +355,4 @@ public abstract class ImageFetcher {
public interface Callback {
void onImageFetched();
}
}
}