forked from External/mage
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:
parent
8e2ff2db0f
commit
0e39d6a833
18 changed files with 82 additions and 57 deletions
|
|
@ -155,9 +155,15 @@ public final class CardImageUtils {
|
||||||
return "ERROR: empty image file name, object type - " + card.getMageObjectType();
|
return "ERROR: empty image file name, object type - " + card.getMageObjectType();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (card.getMageObjectType().isUseTokensRepository()
|
boolean isTokenRepository = card.getMageObjectType().isUseTokensRepository()
|
||||||
|| card.getExpansionSetCode().equals(TokenRepository.XMAGE_TOKENS_SET_CODE)) {
|
|| card.getExpansionSetCode().equals(TokenRepository.XMAGE_TOKENS_SET_CODE);
|
||||||
// token images or inner cards like face down
|
// if token from a card then must use card repository instead
|
||||||
|
if (isTokenRepository && !card.getCardNumber().isEmpty()) {
|
||||||
|
isTokenRepository = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTokenRepository) {
|
||||||
|
// images from tokens repository (token + xmage token)
|
||||||
CardDownloadData cardData = new CardDownloadData(
|
CardDownloadData cardData = new CardDownloadData(
|
||||||
imageFileName.replace(" Token", ""),
|
imageFileName.replace(" Token", ""),
|
||||||
card.getExpansionSetCode(),
|
card.getExpansionSetCode(),
|
||||||
|
|
@ -167,18 +173,7 @@ public final class CardImageUtils {
|
||||||
cardData.setToken(true);
|
cardData.setToken(true);
|
||||||
imageFile = CardImageUtils.buildImagePathToCardOrToken(cardData);
|
imageFile = CardImageUtils.buildImagePathToCardOrToken(cardData);
|
||||||
} else {
|
} else {
|
||||||
// card images
|
// images from cards repository (card + token from cards)
|
||||||
// workaround to find various art settings first
|
|
||||||
// TODO: no needs in workaround?! ?!
|
|
||||||
boolean usesVariousArt = false;
|
|
||||||
CardInfo cardInfo = CardRepository.instance.findCardWithPreferredSetAndNumber(
|
|
||||||
card.getName(),
|
|
||||||
card.getExpansionSetCode(),
|
|
||||||
card.getCardNumber()
|
|
||||||
);
|
|
||||||
if (cardInfo != null) {
|
|
||||||
usesVariousArt = cardInfo.usesVariousArt();
|
|
||||||
}
|
|
||||||
CardDownloadData cardData = new CardDownloadData(
|
CardDownloadData cardData = new CardDownloadData(
|
||||||
imageFileName,
|
imageFileName,
|
||||||
card.getExpansionSetCode(),
|
card.getExpansionSetCode(),
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,13 @@ public interface MageObject extends MageItem, Serializable, Copyable<MageObject>
|
||||||
|
|
||||||
void setImageNumber(Integer imageNumber);
|
void setImageNumber(Integer imageNumber);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set contains multiple cards with same card name but different images (also used for token from card)
|
||||||
|
*/
|
||||||
|
boolean getUsesVariousArt();
|
||||||
|
|
||||||
|
void setUsesVariousArt(boolean usesVariousArt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get image file name
|
* Get image file name
|
||||||
* - empty for default name from a card
|
* - empty for default name from a card
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ public abstract class MageObjectImpl implements MageObject {
|
||||||
|
|
||||||
private String expansionSetCode = "";
|
private String expansionSetCode = "";
|
||||||
private String cardNumber = "";
|
private String cardNumber = "";
|
||||||
|
private boolean usesVariousArt = false;
|
||||||
private String imageFileName = "";
|
private String imageFileName = "";
|
||||||
private int imageNumber = 0;
|
private int imageNumber = 0;
|
||||||
|
|
||||||
|
|
@ -77,6 +78,7 @@ public abstract class MageObjectImpl implements MageObject {
|
||||||
frameColor = object.frameColor.copy();
|
frameColor = object.frameColor.copy();
|
||||||
frameStyle = object.frameStyle;
|
frameStyle = object.frameStyle;
|
||||||
expansionSetCode = object.expansionSetCode;
|
expansionSetCode = object.expansionSetCode;
|
||||||
|
usesVariousArt = object.usesVariousArt;
|
||||||
cardNumber = object.cardNumber;
|
cardNumber = object.cardNumber;
|
||||||
imageFileName = object.imageFileName;
|
imageFileName = object.imageFileName;
|
||||||
imageNumber = object.imageNumber;
|
imageNumber = object.imageNumber;
|
||||||
|
|
@ -258,6 +260,16 @@ public abstract class MageObjectImpl implements MageObject {
|
||||||
this.expansionSetCode = expansionSetCode;
|
this.expansionSetCode = expansionSetCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getUsesVariousArt() {
|
||||||
|
return usesVariousArt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUsesVariousArt(boolean usesVariousArt) {
|
||||||
|
this.usesVariousArt = usesVariousArt;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getCardNumber() {
|
public String getCardNumber() {
|
||||||
return cardNumber;
|
return cardNumber;
|
||||||
|
|
|
||||||
|
|
@ -339,6 +339,7 @@ public class BecomesFaceDownCreatureEffect extends ContinuousEffectImpl {
|
||||||
TokenInfo faceDownInfo = TokenRepository.instance.findPreferredTokenInfoForXmage(tokenName, object.getId());
|
TokenInfo faceDownInfo = TokenRepository.instance.findPreferredTokenInfoForXmage(tokenName, object.getId());
|
||||||
if (faceDownInfo != null) {
|
if (faceDownInfo != null) {
|
||||||
faceDownToken.setExpansionSetCode(faceDownInfo.getSetCode());
|
faceDownToken.setExpansionSetCode(faceDownInfo.getSetCode());
|
||||||
|
faceDownToken.setUsesVariousArt(false);
|
||||||
faceDownToken.setCardNumber("0");
|
faceDownToken.setCardNumber("0");
|
||||||
faceDownToken.setImageFileName(faceDownInfo.getName());
|
faceDownToken.setImageFileName(faceDownInfo.getName());
|
||||||
faceDownToken.setImageNumber(faceDownInfo.getImageNumber());
|
faceDownToken.setImageNumber(faceDownInfo.getImageNumber());
|
||||||
|
|
|
||||||
|
|
@ -148,13 +148,6 @@ public interface Card extends MageObject, Ownerable {
|
||||||
|
|
||||||
List<Mana> getMana();
|
List<Mana> getMana();
|
||||||
|
|
||||||
/**
|
|
||||||
* Set contains multiple cards with same card name but different images. Used for image path generation.
|
|
||||||
*/
|
|
||||||
boolean getUsesVariousArt();
|
|
||||||
|
|
||||||
void setUsesVariousArt(boolean usesVariousArt);
|
|
||||||
|
|
||||||
Counters getCounters(Game game);
|
Counters getCounters(Game game);
|
||||||
|
|
||||||
Counters getCounters(GameState state);
|
Counters getCounters(GameState state);
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
protected SpellAbility spellAbility;
|
protected SpellAbility spellAbility;
|
||||||
protected boolean flipCard;
|
protected boolean flipCard;
|
||||||
protected String flipCardName;
|
protected String flipCardName;
|
||||||
protected boolean usesVariousArt = false;
|
|
||||||
protected boolean morphCard;
|
protected boolean morphCard;
|
||||||
protected List<UUID> attachments = new ArrayList<>();
|
protected List<UUID> attachments = new ArrayList<>();
|
||||||
protected boolean extraDeckCard = false;
|
protected boolean extraDeckCard = false;
|
||||||
|
|
@ -65,6 +64,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
|
|
||||||
this.rarity = setInfo.getRarity();
|
this.rarity = setInfo.getRarity();
|
||||||
this.setExpansionSetCode(setInfo.getExpansionSetCode());
|
this.setExpansionSetCode(setInfo.getExpansionSetCode());
|
||||||
|
this.setUsesVariousArt(setInfo.getUsesVariousArt());
|
||||||
this.setCardNumber(setInfo.getCardNumber());
|
this.setCardNumber(setInfo.getCardNumber());
|
||||||
this.setImageFileName(""); // use default
|
this.setImageFileName(""); // use default
|
||||||
this.setImageNumber(0);
|
this.setImageNumber(0);
|
||||||
|
|
@ -86,7 +86,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
|
|
||||||
CardGraphicInfo graphicInfo = setInfo.getGraphicInfo();
|
CardGraphicInfo graphicInfo = setInfo.getGraphicInfo();
|
||||||
if (graphicInfo != null) {
|
if (graphicInfo != null) {
|
||||||
this.usesVariousArt = graphicInfo.getUsesVariousArt();
|
|
||||||
if (graphicInfo.getFrameColor() != null) {
|
if (graphicInfo.getFrameColor() != null) {
|
||||||
this.frameColor = graphicInfo.getFrameColor().copy();
|
this.frameColor = graphicInfo.getFrameColor().copy();
|
||||||
}
|
}
|
||||||
|
|
@ -145,7 +144,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
spellAbility = null; // will be set on first getSpellAbility call if card has one
|
spellAbility = null; // will be set on first getSpellAbility call if card has one
|
||||||
flipCard = card.flipCard;
|
flipCard = card.flipCard;
|
||||||
flipCardName = card.flipCardName;
|
flipCardName = card.flipCardName;
|
||||||
usesVariousArt = card.usesVariousArt;
|
|
||||||
morphCard = card.morphCard;
|
morphCard = card.morphCard;
|
||||||
extraDeckCard = card.extraDeckCard;
|
extraDeckCard = card.extraDeckCard;
|
||||||
|
|
||||||
|
|
@ -724,16 +722,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
return flipCardName;
|
return flipCardName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getUsesVariousArt() {
|
|
||||||
return usesVariousArt;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setUsesVariousArt(boolean usesVariousArt) {
|
|
||||||
this.usesVariousArt = usesVariousArt;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Counters getCounters(Game game) {
|
public Counters getCounters(Game game) {
|
||||||
return getCounters(game.getState());
|
return getCounters(game.getState());
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,10 @@ public final class CardSetInfo implements Serializable, Copyable<CardSetInfo> {
|
||||||
return this.expansionSetCode;
|
return this.expansionSetCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getUsesVariousArt() {
|
||||||
|
return this.graphicInfo != null && this.graphicInfo.getUsesVariousArt();
|
||||||
|
}
|
||||||
|
|
||||||
public String getCardNumber() {
|
public String getCardNumber() {
|
||||||
return this.cardNumber;
|
return this.cardNumber;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ public class MockCard extends CardImpl implements MockableCard {
|
||||||
public MockCard(CardInfo card) {
|
public MockCard(CardInfo card) {
|
||||||
super(null, card.getName());
|
super(null, card.getName());
|
||||||
this.setExpansionSetCode(card.getSetCode());
|
this.setExpansionSetCode(card.getSetCode());
|
||||||
|
this.setUsesVariousArt(card.usesVariousArt());
|
||||||
this.setCardNumber(card.getCardNumber());
|
this.setCardNumber(card.getCardNumber());
|
||||||
this.setImageFileName(""); // use default
|
this.setImageFileName(""); // use default
|
||||||
this.setImageNumber(0);
|
this.setImageNumber(0);
|
||||||
|
|
@ -51,8 +52,6 @@ public class MockCard extends CardImpl implements MockableCard {
|
||||||
this.subtype = card.getSubTypes();
|
this.subtype = card.getSubTypes();
|
||||||
this.supertype = card.getSupertypes();
|
this.supertype = card.getSupertypes();
|
||||||
|
|
||||||
this.usesVariousArt = card.usesVariousArt();
|
|
||||||
|
|
||||||
//this.manaCost = new ManaCostsImpl<>(join(card.getManaCosts(CardInfo.ManaCostSide.ALL)));
|
//this.manaCost = new ManaCostsImpl<>(join(card.getManaCosts(CardInfo.ManaCostSide.ALL)));
|
||||||
this.manaCostLeftStr = card.getManaCosts(CardInfo.ManaCostSide.LEFT);
|
this.manaCostLeftStr = card.getManaCosts(CardInfo.ManaCostSide.LEFT);
|
||||||
this.manaCostRightStr = card.getManaCosts(CardInfo.ManaCostSide.RIGHT);
|
this.manaCostRightStr = card.getManaCosts(CardInfo.ManaCostSide.RIGHT);
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ public class MockSplitCard extends SplitCard implements MockableCard {
|
||||||
|
|
||||||
this.frameColor = card.getFrameColor();
|
this.frameColor = card.getFrameColor();
|
||||||
this.frameStyle = card.getFrameStyle();
|
this.frameStyle = card.getFrameStyle();
|
||||||
this.usesVariousArt = card.usesVariousArt();
|
|
||||||
|
|
||||||
this.color = card.getColor();
|
this.color = card.getColor();
|
||||||
this.flipCard = card.isFlipCard();
|
this.flipCard = card.isFlipCard();
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ public abstract class CommandObjectImpl implements CommandObject {
|
||||||
private String name = "";
|
private String name = "";
|
||||||
|
|
||||||
private String expansionSetCode = "";
|
private String expansionSetCode = "";
|
||||||
|
private boolean usesVariousArt = false;
|
||||||
private String cardNumber = "";
|
private String cardNumber = "";
|
||||||
private String imageFileName = "";
|
private String imageFileName = "";
|
||||||
private int imageNumber;
|
private int imageNumber;
|
||||||
|
|
@ -27,6 +28,7 @@ public abstract class CommandObjectImpl implements CommandObject {
|
||||||
this.id = object.id;
|
this.id = object.id;
|
||||||
this.name = object.name;
|
this.name = object.name;
|
||||||
this.expansionSetCode = object.expansionSetCode;
|
this.expansionSetCode = object.expansionSetCode;
|
||||||
|
this.usesVariousArt = object.usesVariousArt;
|
||||||
this.cardNumber = object.cardNumber;
|
this.cardNumber = object.cardNumber;
|
||||||
this.imageFileName = object.imageFileName;
|
this.imageFileName = object.imageFileName;
|
||||||
this.imageNumber = object.imageNumber;
|
this.imageNumber = object.imageNumber;
|
||||||
|
|
@ -47,6 +49,16 @@ public abstract class CommandObjectImpl implements CommandObject {
|
||||||
this.expansionSetCode = expansionSetCode;
|
this.expansionSetCode = expansionSetCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getUsesVariousArt() {
|
||||||
|
return usesVariousArt;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUsesVariousArt(boolean usesVariousArt) {
|
||||||
|
this.usesVariousArt = usesVariousArt;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getCardNumber() {
|
public String getCardNumber() {
|
||||||
return cardNumber;
|
return cardNumber;
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ public abstract class Emblem extends CommandObjectImpl {
|
||||||
);
|
);
|
||||||
if (foundInfo != null) {
|
if (foundInfo != null) {
|
||||||
this.setExpansionSetCode(foundInfo.getSetCode());
|
this.setExpansionSetCode(foundInfo.getSetCode());
|
||||||
|
this.setUsesVariousArt(false);
|
||||||
this.setCardNumber("");
|
this.setCardNumber("");
|
||||||
this.setImageFileName(""); // use default
|
this.setImageFileName(""); // use default
|
||||||
this.setImageNumber(foundInfo.getImageNumber());
|
this.setImageNumber(foundInfo.getImageNumber());
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ public abstract class Plane extends CommandObjectImpl {
|
||||||
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForClass(this.getClass().getName(), null);
|
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForClass(this.getClass().getName(), null);
|
||||||
if (foundInfo != null) {
|
if (foundInfo != null) {
|
||||||
this.setExpansionSetCode(foundInfo.getSetCode());
|
this.setExpansionSetCode(foundInfo.getSetCode());
|
||||||
|
this.setUsesVariousArt(false);
|
||||||
this.setCardNumber("");
|
this.setCardNumber("");
|
||||||
this.setImageFileName(""); // use default
|
this.setImageFileName(""); // use default
|
||||||
this.setImageNumber(foundInfo.getImageNumber());
|
this.setImageNumber(foundInfo.getImageNumber());
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,6 @@ import java.util.stream.Collectors;
|
||||||
*/
|
*/
|
||||||
public final class EmblemOfCard extends Emblem {
|
public final class EmblemOfCard extends Emblem {
|
||||||
|
|
||||||
private final boolean usesVariousArt;
|
|
||||||
|
|
||||||
public static Card lookupCard(
|
public static Card lookupCard(
|
||||||
String cardName,
|
String cardName,
|
||||||
String cardNumber,
|
String cardNumber,
|
||||||
|
|
@ -76,20 +74,20 @@ public final class EmblemOfCard extends Emblem {
|
||||||
this.getAbilities().setSourceId(this.getId());
|
this.getAbilities().setSourceId(this.getId());
|
||||||
|
|
||||||
this.setExpansionSetCode(card.getExpansionSetCode());
|
this.setExpansionSetCode(card.getExpansionSetCode());
|
||||||
|
this.setUsesVariousArt(card.getUsesVariousArt());
|
||||||
this.setCardNumber(card.getCardNumber());
|
this.setCardNumber(card.getCardNumber());
|
||||||
this.setImageFileName(card.getImageFileName());
|
this.setImageFileName(card.getImageFileName());
|
||||||
this.setImageNumber(card.getImageNumber());
|
this.setImageNumber(card.getImageNumber());
|
||||||
this.usesVariousArt = card.getUsesVariousArt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmblemOfCard(Card card) {
|
public EmblemOfCard(Card card) {
|
||||||
this(card, Zone.BATTLEFIELD);
|
this(card, Zone.BATTLEFIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmblemOfCard(EmblemOfCard eoc) {
|
private EmblemOfCard(final EmblemOfCard eoc) {
|
||||||
super(eoc);
|
super(eoc);
|
||||||
this.usesVariousArt = eoc.usesVariousArt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EmblemOfCard copy() {
|
public EmblemOfCard copy() {
|
||||||
return new EmblemOfCard(this);
|
return new EmblemOfCard(this);
|
||||||
|
|
@ -101,9 +99,5 @@ public final class EmblemOfCard extends Emblem {
|
||||||
// super method would try and fail to find the emblem image here
|
// super method would try and fail to find the emblem image here
|
||||||
// (not sure why that would be setSoureObject's job; we get our image during construction)
|
// (not sure why that would be setSoureObject's job; we get our image during construction)
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getUsesVariousArt() {
|
|
||||||
return usesVariousArt;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ public class RadiationEmblem extends Emblem {
|
||||||
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForXmage(TokenRepository.XMAGE_IMAGE_NAME_RADIATION, null);
|
TokenInfo foundInfo = TokenRepository.instance.findPreferredTokenInfoForXmage(TokenRepository.XMAGE_IMAGE_NAME_RADIATION, null);
|
||||||
if (foundInfo != null) {
|
if (foundInfo != null) {
|
||||||
this.setExpansionSetCode(foundInfo.getSetCode());
|
this.setExpansionSetCode(foundInfo.getSetCode());
|
||||||
|
this.setUsesVariousArt(false);
|
||||||
this.setCardNumber("");
|
this.setCardNumber("");
|
||||||
this.setImageFileName(""); // use default
|
this.setImageFileName(""); // use default
|
||||||
this.setImageNumber(foundInfo.getImageNumber());
|
this.setImageNumber(foundInfo.getImageNumber());
|
||||||
|
|
|
||||||
|
|
@ -145,10 +145,10 @@ public class PermanentCard extends PermanentImpl {
|
||||||
this.rarity = card.getRarity();
|
this.rarity = card.getRarity();
|
||||||
|
|
||||||
this.setExpansionSetCode(card.getExpansionSetCode());
|
this.setExpansionSetCode(card.getExpansionSetCode());
|
||||||
|
this.setUsesVariousArt(card.getUsesVariousArt());
|
||||||
this.setCardNumber(card.getCardNumber());
|
this.setCardNumber(card.getCardNumber());
|
||||||
this.setImageFileName(card.getImageFileName());
|
this.setImageFileName(card.getImageFileName());
|
||||||
this.setImageNumber(card.getImageNumber());
|
this.setImageNumber(card.getImageNumber());
|
||||||
this.usesVariousArt = card.getUsesVariousArt();
|
|
||||||
|
|
||||||
if (card.getSecondCardFace() != null) {
|
if (card.getSecondCardFace() != null) {
|
||||||
this.secondSideCardClazz = card.getSecondCardFace().getClass();
|
this.secondSideCardClazz = card.getSecondCardFace().getClass();
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
||||||
// - use random set code
|
// - use random set code
|
||||||
// - use default set code
|
// - use default set code
|
||||||
|
|
||||||
// token from a card - must use card image instead (example: Embalm ability)
|
// token from a card - must use card image instead, no need to choose new image (example: Embalm ability, copy of card, etc)
|
||||||
if (!token.getCardNumber().isEmpty()) {
|
if (!token.getCardNumber().isEmpty()) {
|
||||||
return new TokenInfo(TokenType.TOKEN, token.getName(), token.getExpansionSetCode(), 0);
|
return new TokenInfo(TokenType.TOKEN, token.getName(), token.getExpansionSetCode(), 0);
|
||||||
}
|
}
|
||||||
|
|
@ -292,13 +292,17 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
||||||
// front side
|
// front side
|
||||||
TokenInfo tokenInfo = TokenImpl.generateTokenInfo((TokenImpl) token, game, source == null ? null : source.getSourceId());
|
TokenInfo tokenInfo = TokenImpl.generateTokenInfo((TokenImpl) token, game, source == null ? null : source.getSourceId());
|
||||||
token.setExpansionSetCode(tokenInfo.getSetCode());
|
token.setExpansionSetCode(tokenInfo.getSetCode());
|
||||||
//token.setCardNumber(""); // if token from a card then don't change a card number
|
|
||||||
token.setImageNumber(tokenInfo.getImageNumber());
|
token.setImageNumber(tokenInfo.getImageNumber());
|
||||||
|
// if token from a card then keep card number and var art info
|
||||||
|
//token.setCardNumber("");
|
||||||
|
//token.setUsesVariousArt(false);
|
||||||
if (token.getBackFace() != null) {
|
if (token.getBackFace() != null) {
|
||||||
// back side
|
// back side
|
||||||
tokenInfo = TokenImpl.generateTokenInfo((TokenImpl) token.getBackFace(), game, source == null ? null : source.getSourceId());
|
tokenInfo = TokenImpl.generateTokenInfo((TokenImpl) token.getBackFace(), game, source == null ? null : source.getSourceId());
|
||||||
token.getBackFace().setExpansionSetCode(tokenInfo.getSetCode());
|
token.getBackFace().setExpansionSetCode(tokenInfo.getSetCode());
|
||||||
token.getBackFace().setImageNumber(tokenInfo.getImageNumber());
|
token.getBackFace().setImageNumber(tokenInfo.getImageNumber());
|
||||||
|
//token.setCardNumber("");
|
||||||
|
//token.setUsesVariousArt(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Permanent> needTokens = new ArrayList<>();
|
List<Permanent> needTokens = new ArrayList<>();
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,16 @@ public class StackAbility extends StackObjectImpl implements Ability {
|
||||||
throw new IllegalStateException("Wrong code usage: you can't change set code for the stack ability");
|
throw new IllegalStateException("Wrong code usage: you can't change set code for the stack ability");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getUsesVariousArt() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUsesVariousArt(boolean usesVariousArt) {
|
||||||
|
throw new IllegalStateException("Wrong code usage: you can't change usesVariousArt for the stack ability");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getCardNumber() {
|
public String getCardNumber() {
|
||||||
return "";
|
return "";
|
||||||
|
|
|
||||||
|
|
@ -2173,19 +2173,17 @@ public final class CardUtil {
|
||||||
String needImageFileName;
|
String needImageFileName;
|
||||||
int needImageNumber;
|
int needImageNumber;
|
||||||
boolean needUsesVariousArt = false;
|
boolean needUsesVariousArt = false;
|
||||||
if (copyFromObject instanceof Card) {
|
|
||||||
needUsesVariousArt = ((Card) copyFromObject).getUsesVariousArt();
|
|
||||||
}
|
|
||||||
|
|
||||||
needSetCode = copyFromObject.getExpansionSetCode();
|
needSetCode = copyFromObject.getExpansionSetCode();
|
||||||
needCardNumber = copyFromObject.getCardNumber();
|
needCardNumber = copyFromObject.getCardNumber();
|
||||||
needImageFileName = copyFromObject.getImageFileName();
|
needImageFileName = copyFromObject.getImageFileName();
|
||||||
needImageNumber = copyFromObject.getImageNumber();
|
needImageNumber = copyFromObject.getImageNumber();
|
||||||
|
needUsesVariousArt = copyFromObject.getUsesVariousArt();
|
||||||
|
|
||||||
if (targetObject instanceof Permanent) {
|
if (targetObject instanceof Permanent) {
|
||||||
copySetAndCardNumber((Permanent) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
|
copySetAndCardNumber((Permanent) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
|
||||||
} else if (targetObject instanceof Token) {
|
} 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) {
|
} else if (targetObject instanceof Card) {
|
||||||
copySetAndCardNumber((Card) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
|
copySetAndCardNumber((Card) targetObject, needSetCode, needCardNumber, needImageFileName, needImageNumber, needUsesVariousArt);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2197,28 +2195,34 @@ public final class CardUtil {
|
||||||
if (targetPermanent instanceof PermanentCard
|
if (targetPermanent instanceof PermanentCard
|
||||||
|| targetPermanent instanceof PermanentToken) {
|
|| targetPermanent instanceof PermanentToken) {
|
||||||
targetPermanent.setExpansionSetCode(newSetCode);
|
targetPermanent.setExpansionSetCode(newSetCode);
|
||||||
|
targetPermanent.setUsesVariousArt(usesVariousArt);
|
||||||
targetPermanent.setCardNumber(newCardNumber);
|
targetPermanent.setCardNumber(newCardNumber);
|
||||||
targetPermanent.setImageFileName(newImageFileName);
|
targetPermanent.setImageFileName(newImageFileName);
|
||||||
targetPermanent.setImageNumber(newImageNumber);
|
targetPermanent.setImageNumber(newImageNumber);
|
||||||
targetPermanent.setUsesVariousArt(usesVariousArt);
|
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Wrong code usage: un-supported target permanent type: " + targetPermanent.getClass().getSimpleName());
|
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.setExpansionSetCode(newSetCode);
|
||||||
targetToken.setCardNumber(newCardNumber);
|
targetToken.setCardNumber(newCardNumber);
|
||||||
targetToken.setImageFileName(newImageFileName);
|
targetToken.setImageFileName(newImageFileName);
|
||||||
targetToken.setImageNumber(newImageNumber);
|
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) {
|
private static void copySetAndCardNumber(Card targetCard, String newSetCode, String newCardNumber, String newImageFileName, Integer newImageNumber, boolean usesVariousArt) {
|
||||||
targetCard.setExpansionSetCode(newSetCode);
|
targetCard.setExpansionSetCode(newSetCode);
|
||||||
|
targetCard.setUsesVariousArt(usesVariousArt);
|
||||||
targetCard.setCardNumber(newCardNumber);
|
targetCard.setCardNumber(newCardNumber);
|
||||||
targetCard.setImageFileName(newImageFileName);
|
targetCard.setImageFileName(newImageFileName);
|
||||||
targetCard.setImageNumber(newImageNumber);
|
targetCard.setImageNumber(newImageNumber);
|
||||||
targetCard.setUsesVariousArt(usesVariousArt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue