images: fixed miss token image in some use cases (if it was created from a card and a set contains multiple images);

This commit is contained in:
Oleg Agafonov 2024-05-26 12:56:03 +04:00
parent 8e2ff2db0f
commit 0e39d6a833
18 changed files with 82 additions and 57 deletions

View file

@ -2173,19 +2173,17 @@ public final class CardUtil {
String needImageFileName;
int needImageNumber;
boolean needUsesVariousArt = false;
if (copyFromObject instanceof Card) {
needUsesVariousArt = ((Card) copyFromObject).getUsesVariousArt();
}
needSetCode = copyFromObject.getExpansionSetCode();
needCardNumber = copyFromObject.getCardNumber();
needImageFileName = copyFromObject.getImageFileName();
needImageNumber = copyFromObject.getImageNumber();
needUsesVariousArt = copyFromObject.getUsesVariousArt();
if (targetObject instanceof Permanent) {
copySetAndCardNumber((Permanent) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
} else if (targetObject instanceof Token) {
copySetAndCardNumber((Token) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber);
copySetAndCardNumber((Token) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
} else if (targetObject instanceof Card) {
copySetAndCardNumber((Card) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
} else {
@ -2197,28 +2195,34 @@ public final class CardUtil {
if (targetPermanent instanceof PermanentCard
|| targetPermanent instanceof PermanentToken) {
targetPermanent.setExpansionSetCode(newSetCode);
targetPermanent.setUsesVariousArt(usesVariousArt);
targetPermanent.setCardNumber(newCardNumber);
targetPermanent.setImageFileName(newImageFileName);
targetPermanent.setImageNumber(newImageNumber);
targetPermanent.setUsesVariousArt(usesVariousArt);
} else {
throw new IllegalArgumentException("Wrong code usage: un-supported target permanent type: " + targetPermanent.getClass().getSimpleName());
}
}
private static void copySetAndCardNumber(Token targetToken, String newSetCode, String newCardNumber, String newImageFileName, Integer newImageNumber) {
private static void copySetAndCardNumber(Token targetToken, String newSetCode, String newCardNumber, String newImageFileName, Integer newImageNumber, boolean newUsesVariousArt) {
targetToken.setExpansionSetCode(newSetCode);
targetToken.setCardNumber(newCardNumber);
targetToken.setImageFileName(newImageFileName);
targetToken.setImageNumber(newImageNumber);
// runtime check
if (newUsesVariousArt && newCardNumber.isEmpty()) {
throw new IllegalArgumentException("Wrong code usage: usesVariousArt can be used for token from card only");
}
targetToken.setUsesVariousArt(newUsesVariousArt);
}
private static void copySetAndCardNumber(Card targetCard, String newSetCode, String newCardNumber, String newImageFileName, Integer newImageNumber, boolean usesVariousArt) {
targetCard.setExpansionSetCode(newSetCode);
targetCard.setUsesVariousArt(usesVariousArt);
targetCard.setCardNumber(newCardNumber);
targetCard.setImageFileName(newImageFileName);
targetCard.setImageNumber(newImageNumber);
targetCard.setUsesVariousArt(usesVariousArt);
}
/**