first stab

This commit is contained in:
Northmoc
2022-08-26 15:52:24 -04:00
parent 0aaac12b78
commit 60b2ea2546
9 changed files with 265 additions and 8 deletions

View File

@@ -25,6 +25,11 @@ public final class ImageKeys {
public static final String FORETELL_IMAGE = "foretell";
public static final String BACKFACE_POSTFIX = "$alt";
public static final String SPECFACE_W = "$wspec";
public static final String SPECFACE_U = "$uspec";
public static final String SPECFACE_B = "$bspec";
public static final String SPECFACE_R = "$rspec";
public static final String SPECFACE_G = "$gspec";
private static String CACHE_CARD_PICS_DIR, CACHE_TOKEN_PICS_DIR, CACHE_ICON_PICS_DIR, CACHE_BOOSTER_PICS_DIR,
CACHE_FATPACK_PICS_DIR, CACHE_BOOSTERBOX_PICS_DIR, CACHE_PRECON_PICS_DIR, CACHE_TOURNAMENTPACK_PICS_DIR;

View File

@@ -240,5 +240,10 @@ public interface IPaperCard extends InventoryItem, Serializable {
boolean hasBackFace();
String getCardImageKey();
String getCardAltImageKey();
String getCardWSpecImageKey();
String getCardUSpecImageKey();
String getCardBSpecImageKey();
String getCardRSpecImageKey();
String getCardGSpecImageKey();
}

View File

@@ -336,6 +336,66 @@ public final class PaperCard implements Comparable<IPaperCard>, InventoryItemFro
return cardAltImageKey;
}
private String cardWSpecImageKey = null;
@Override
public String getCardWSpecImageKey() {
if (this.cardWSpecImageKey == null) {
if (this.rules.getSplitType() == CardSplitType.Specialize)
this.cardWSpecImageKey = ImageUtil.getImageKey(this, false, true, "white");
else // just use cardImageKey
this.cardWSpecImageKey = ImageUtil.getImageKey(this, false, true);
}
return cardWSpecImageKey;
}
private String cardUSpecImageKey = null;
@Override
public String getCardUSpecImageKey() {
if (this.cardUSpecImageKey == null) {
if (this.rules.getSplitType() == CardSplitType.Specialize)
this.cardUSpecImageKey = ImageUtil.getImageKey(this, false, true, "blue");
else // just use cardImageKey
this.cardUSpecImageKey = ImageUtil.getImageKey(this, false, true);
}
return cardUSpecImageKey;
}
private String cardBSpecImageKey = null;
@Override
public String getCardBSpecImageKey() {
if (this.cardBSpecImageKey == null) {
if (this.rules.getSplitType() == CardSplitType.Specialize)
this.cardBSpecImageKey = ImageUtil.getImageKey(this, false, true, "black");
else // just use cardImageKey
this.cardBSpecImageKey = ImageUtil.getImageKey(this, false, true);
}
return cardBSpecImageKey;
}
private String cardRSpecImageKey = null;
@Override
public String getCardRSpecImageKey() {
if (this.cardRSpecImageKey == null) {
if (this.rules.getSplitType() == CardSplitType.Specialize)
this.cardRSpecImageKey = ImageUtil.getImageKey(this, false, true, "red");
else // just use cardImageKey
this.cardRSpecImageKey = ImageUtil.getImageKey(this, false, true);
}
return cardRSpecImageKey;
}
private String cardGSpecImageKey = null;
@Override
public String getCardGSpecImageKey() {
if (this.cardGSpecImageKey == null) {
if (this.rules.getSplitType() == CardSplitType.Specialize)
this.cardGSpecImageKey = ImageUtil.getImageKey(this, false, true, "green");
else // just use cardImageKey
this.cardGSpecImageKey = ImageUtil.getImageKey(this, false, true);
}
return cardGSpecImageKey;
}
@Override
public boolean hasBackFace(){
CardSplitType cst = this.rules.getSplitType();

View File

@@ -169,6 +169,27 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard {
return getImageKey(true);
}
@Override
public String getCardWSpecImageKey() {
return getImageKey(false);
}
@Override
public String getCardUSpecImageKey() {
return getImageKey(false);
}
@Override
public String getCardBSpecImageKey() {
return getImageKey(false);
}
@Override
public String getCardRSpecImageKey() {
return getImageKey(false);
}
@Override
public String getCardGSpecImageKey() {
return getImageKey(false);
}
// InventoryItem
@Override
public String getImageKey(boolean altState) {

View File

@@ -27,7 +27,12 @@ public class ImageUtil {
}
public static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) {
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace);
return getImageRelativePath(cp, backFace, includeSet, isDownloadUrl, "");
}
public static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl,
String specializeColor) {
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace, specializeColor);
if (nameToUse == null) {
return null;
}
@@ -80,8 +85,37 @@ public class ImageUtil {
}
}
public static String getNameToUse(PaperCard cp, boolean backFace) {
public static String getNameToUse(PaperCard cp, boolean backFace, String specialize) {
final CardRules card = cp.getRules();
if (!specialize.equals("")) {
switch (specialize) {
case "white":
if (card.getWSpecialize() != null) {
return card.getWSpecialize().getName();
}
break;
case "blue":
if (card.getUSpecialize() != null) {
return card.getUSpecialize().getName();
}
break;
case "black":
if (card.getBSpecialize() != null) {
return card.getBSpecialize().getName();
}
break;
case "red":
if (card.getRSpecialize() != null) {
return card.getRSpecialize().getName();
}
break;
case "green":
if (card.getGSpecialize() != null) {
return card.getGSpecialize().getName();
}
break;
}
}
if (backFace) {
if (cp.hasBackFace())
if (card.getOtherPart() != null) {
@@ -94,7 +128,7 @@ public class ImageUtil {
}
else
return null;
} else if(CardSplitType.Split == cp.getRules().getSplitType()) {
} else if (CardSplitType.Split == cp.getRules().getSplitType()) {
return card.getMainPart().getName() + card.getOtherPart().getName();
} else {
return cp.getName();
@@ -102,7 +136,11 @@ public class ImageUtil {
}
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) {
return getImageRelativePath(cp, backFace, includeSet, false);
return getImageKey(cp, backFace, includeSet, "");
}
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet, String specializeColor) {
return getImageRelativePath(cp, backFace, includeSet, false, specializeColor);
}
public static String getDownloadUrl(PaperCard cp, boolean backFace) {

View File

@@ -280,6 +280,27 @@ public class CardFactory {
} else if (c.isAdventureCard()) {
c.setState(CardStateName.Adventure, false);
c.setImageKey(originalPicture);
} else if (c.canSpecialize()) {
c.setState(CardStateName.SpecializeW, false);
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_W);
c.setSetCode(cp.getEdition());
c.setRarity(cp.getRarity());
c.setState(CardStateName.SpecializeU, false);
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_U);
c.setSetCode(cp.getEdition());
c.setRarity(cp.getRarity());
c.setState(CardStateName.SpecializeB, false);
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_B);
c.setSetCode(cp.getEdition());
c.setRarity(cp.getRarity());
c.setState(CardStateName.SpecializeR, false);
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_R);
c.setSetCode(cp.getEdition());
c.setRarity(cp.getRarity());
c.setState(CardStateName.SpecializeG, false);
c.setImageKey(cp.getImageKey(false) + ImageKeys.SPECFACE_G);
c.setSetCode(cp.getEdition());
c.setRarity(cp.getRarity());
}
c.setSetCode(cp.getEdition());

View File

@@ -172,12 +172,48 @@ public class ImageCache {
IPaperCard ipc = null;
boolean altState = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
String specColor = "";
if (imageKey.endsWith(ImageKeys.SPECFACE_W)) {
specColor = "white";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_U)) {
specColor = "blue";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_B)) {
specColor = "black";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_R)) {
specColor = "red";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_G)) {
specColor = "green";
}
if (altState)
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
if (!specColor.equals(""))
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.SPECFACE_W.length());
if (imageKey.startsWith(ImageKeys.CARD_PREFIX)) {
ipc = ImageUtil.getPaperCardFromImageKey(imageKey);
if (ipc != null) {
imageKey = altState ? ipc.getCardAltImageKey() : ipc.getCardImageKey();
if (altState) {
imageKey = ipc.getCardAltImageKey();
} else if (!specColor.equals("")) {
switch (specColor) {
case "white":
imageKey = ipc.getCardWSpecImageKey();
break;
case "blue":
imageKey = ipc.getCardUSpecImageKey();
break;
case "black":
imageKey = ipc.getCardBSpecImageKey();
break;
case "red":
imageKey = ipc.getCardRSpecImageKey();
break;
case "green":
imageKey = ipc.getCardGSpecImageKey();
break;
}
} else {
imageKey = ipc.getCardImageKey();
}
if (StringUtils.isBlank(imageKey))
return Pair.of(_defaultImage, true);
}

View File

@@ -77,15 +77,51 @@ public final class FImageUtil {
}
boolean altState = key.endsWith(ImageKeys.BACKFACE_POSTFIX);
String specColor = "";
if (key.endsWith(ImageKeys.SPECFACE_W)) {
specColor = "white";
} else if (key.endsWith(ImageKeys.SPECFACE_U)) {
specColor = "blue";
} else if (key.endsWith(ImageKeys.SPECFACE_B)) {
specColor = "black";
} else if (key.endsWith(ImageKeys.SPECFACE_R)) {
specColor = "red";
} else if (key.endsWith(ImageKeys.SPECFACE_G)) {
specColor = "green";
}
String imageKey = key;
if (prefix.equals(ImageKeys.CARD_PREFIX)) {
PaperCard card = ImageUtil.getPaperCardFromImageKey(key);
if (card != null)
imageKey = altState ? card.getCardAltImageKey() : card.getCardImageKey();
if (altState) {
imageKey = card.getCardAltImageKey();
} else if (!specColor.equals("")) {
switch (specColor) {
case "white":
imageKey = card.getCardWSpecImageKey();
break;
case "blue":
imageKey = card.getCardUSpecImageKey();
break;
case "black":
imageKey = card.getCardBSpecImageKey();
break;
case "red":
imageKey = card.getCardRSpecImageKey();
break;
case "green":
imageKey = card.getCardGSpecImageKey();
break;
}
} else {
imageKey = card.getCardImageKey();
}
}
if(altState) {
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.BACKFACE_POSTFIX.length());
imageKey += "full.jpg";
} else if (!specColor.equals("")) {
imageKey = imageKey.substring(0, imageKey.length() - ImageKeys.SPECFACE_W.length());
imageKey += "full.jpg";
}
File file = ImageKeys.getImageFile(imageKey);

View File

@@ -108,7 +108,42 @@ public abstract class ImageFetcher {
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();
String specColor = "";
if (imageKey.endsWith(ImageKeys.SPECFACE_W)) {
specColor = "white";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_U)) {
specColor = "blue";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_B)) {
specColor = "black";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_R)) {
specColor = "red";
} else if (imageKey.endsWith(ImageKeys.SPECFACE_G)) {
specColor = "green";
}
String filename = "";
if (backFace) {
filename = paperCard.getCardAltImageKey();
} else if (!specColor.equals("")) {
switch (specColor) {
case "white":
filename = paperCard.getCardWSpecImageKey();
break;
case "blue":
filename = paperCard.getCardUSpecImageKey();
break;
case "black":
filename = paperCard.getCardBSpecImageKey();
break;
case "red":
filename = paperCard.getCardRSpecImageKey();
break;
case "green":
filename = paperCard.getCardGSpecImageKey();
break;
}
} else {
filename = paperCard.getCardImageKey();
}
if (useArtCrop) {
filename = TextUtil.fastReplace(filename, ".full", ".artcrop");
}