mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Merge pull request #1244 from kevlahnota/master
support setlookup on ImageFetcher
This commit is contained in:
@@ -39,16 +39,40 @@ public abstract class ImageFetcher {
|
||||
private HashMap<String, HashSet<Callback>> currentFetches = new HashMap<>();
|
||||
private HashMap<String, String> tokenImages;
|
||||
|
||||
private String getScryfallDownloadURL(PaperCard c, boolean backFace, boolean useArtCrop) {
|
||||
private String getScryfallDownloadURL(PaperCard c, boolean backFace, boolean useArtCrop, boolean hasSetLookup, String imagePath, ArrayList<String> downloadUrls) {
|
||||
StaticData data = StaticData.instance();
|
||||
CardEdition edition = data.getEditions().get(c.getEdition());
|
||||
if (edition == null) // edition does not exist - some error occurred with card data
|
||||
return null;
|
||||
// 1. Try MCI code first, as it original.
|
||||
String setCode = edition.getScryfallCode();
|
||||
String langCode = edition.getCardsLangCode();
|
||||
return ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD +
|
||||
ImageUtil.getScryfallDownloadUrl(c, backFace, setCode, langCode, useArtCrop);
|
||||
if (hasSetLookup) {
|
||||
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(c.getName());
|
||||
for (PaperCard pc : clones) {
|
||||
if (clones.size() > 1) {//clones only
|
||||
if (!c.getEdition().equalsIgnoreCase(pc.getEdition())) {
|
||||
CardEdition ed = data.getEditions().get(pc.getEdition());
|
||||
if (ed != null) {
|
||||
String setCode =ed.getScryfallCode();
|
||||
String langCode = ed.getCardsLangCode();
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(pc, backFace, setCode, langCode, useArtCrop));
|
||||
}
|
||||
}
|
||||
} else {// original from set
|
||||
CardEdition ed = data.getEditions().get(pc.getEdition());
|
||||
if (ed != null) {
|
||||
String setCode =ed.getScryfallCode();
|
||||
String langCode = ed.getCardsLangCode();
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(pc, backFace, setCode, langCode, useArtCrop));
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
// 1. Try MCI code first, as it original.
|
||||
String setCode = edition.getScryfallCode();
|
||||
String langCode = edition.getCardsLangCode();
|
||||
return ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD +
|
||||
ImageUtil.getScryfallDownloadUrl(c, backFace, setCode, langCode, useArtCrop);
|
||||
}
|
||||
}
|
||||
|
||||
public void fetchImage(final String imageKey, final Callback callback) {
|
||||
@@ -81,7 +105,8 @@ public abstract class ImageFetcher {
|
||||
// Skip fetching if artist info is not available for art crop
|
||||
if (useArtCrop && paperCard.getArtist().isEmpty())
|
||||
return;
|
||||
|
||||
String imagePath = ImageUtil.getImageRelativePath(paperCard, false, true, false);
|
||||
final boolean hasSetLookup = ImageKeys.hasSetLookup(imagePath);
|
||||
final boolean backFace = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
|
||||
String filename = backFace ? paperCard.getCardAltImageKey() : paperCard.getCardImageKey();
|
||||
if (useArtCrop) {
|
||||
@@ -93,14 +118,30 @@ public abstract class ImageFetcher {
|
||||
if (!useArtCrop) {
|
||||
//move priority of ftp image here
|
||||
StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
||||
setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace));
|
||||
downloadUrls.add(setDownload.toString());
|
||||
if (!hasSetLookup) {
|
||||
setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace));
|
||||
downloadUrls.add(setDownload.toString());
|
||||
} else {
|
||||
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(paperCard.getName());
|
||||
for (PaperCard pc : clones) {
|
||||
if (clones.size() > 1) {//clones only
|
||||
if (!paperCard.getEdition().equalsIgnoreCase(pc.getEdition())) {
|
||||
StringBuilder set = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
||||
set.append(ImageUtil.getDownloadUrl(pc, backFace));
|
||||
downloadUrls.add(set.toString());
|
||||
}
|
||||
} else {// original from set
|
||||
StringBuilder set = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
||||
set.append(ImageUtil.getDownloadUrl(pc, backFace));
|
||||
downloadUrls.add(set.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final String cardCollectorNumber = paperCard.getCollectorNumber();
|
||||
if (!cardCollectorNumber.equals(IPaperCard.NO_COLLECTOR_NUMBER)) {
|
||||
final String scryfallURL = this.getScryfallDownloadURL(paperCard, backFace, useArtCrop);
|
||||
if (scryfallURL != null)
|
||||
final String scryfallURL = this.getScryfallDownloadURL(paperCard, backFace, useArtCrop, hasSetLookup, imagePath, downloadUrls);
|
||||
if (scryfallURL != null && !hasSetLookup)
|
||||
downloadUrls.add(scryfallURL);
|
||||
}
|
||||
} else if (prefix.equals(ImageKeys.TOKEN_PREFIX)) {
|
||||
|
||||
Reference in New Issue
Block a user