forked from External/mage
Tokens rework: fixed morph support, fixed test (related to #10139)
This commit is contained in:
parent
94819ff91c
commit
3986196aa4
6 changed files with 110 additions and 66 deletions
|
|
@ -1789,7 +1789,7 @@ public final class CardUtil {
|
|||
* Copy image related data from one object to another (card number, set code, token type)
|
||||
* Use it in copy/transform effects
|
||||
*/
|
||||
public static void copySetAndCardNumber(Permanent permanent, MageObject copyFromObject) {
|
||||
public static void copySetAndCardNumber(MageObject targetObject, MageObject copyFromObject) {
|
||||
String needSetCode;
|
||||
String needCardNumber;
|
||||
int needTokenType;
|
||||
|
|
@ -1810,23 +1810,37 @@ public final class CardUtil {
|
|||
needCardNumber = ((Card) copyFromObject).getCardNumber();
|
||||
needTokenType = 0;
|
||||
} else if (copyFromObject instanceof Token) {
|
||||
// TODO: make this work
|
||||
return;
|
||||
needSetCode = ((Token) copyFromObject).getOriginalExpansionSetCode();
|
||||
needCardNumber = ((Token) copyFromObject).getOriginalCardNumber();
|
||||
needTokenType = ((Token) copyFromObject).getTokenType();
|
||||
} else {
|
||||
throw new IllegalStateException("Unsupported copyFromObject class: " + copyFromObject.getClass().getSimpleName());
|
||||
}
|
||||
|
||||
copySetAndCardNumber(permanent, needSetCode, needCardNumber, needTokenType);
|
||||
}
|
||||
|
||||
public static void copySetAndCardNumber(Permanent permanent, String newSetCode, String newCardNumber, Integer newTokenType) {
|
||||
if (permanent instanceof PermanentToken) {
|
||||
((PermanentToken) permanent).getToken().setOriginalExpansionSetCode(newSetCode);
|
||||
((PermanentToken) permanent).getToken().setExpansionSetCodeForImage(newCardNumber);
|
||||
((PermanentToken) permanent).getToken().setTokenType(newTokenType);
|
||||
if (targetObject instanceof Permanent) {
|
||||
copySetAndCardNumber((Permanent) targetObject, needSetCode, needCardNumber, needTokenType);
|
||||
} else if (targetObject instanceof Token) {
|
||||
copySetAndCardNumber((Token) targetObject, needSetCode, needCardNumber, needTokenType);
|
||||
} else {
|
||||
permanent.setExpansionSetCode(newSetCode);
|
||||
permanent.setCardNumber(newCardNumber);
|
||||
throw new IllegalStateException("Unsupported target object class: " + targetObject.getClass().getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
private static void copySetAndCardNumber(Permanent targetPermanent, String newSetCode, String newCardNumber, Integer newTokenType) {
|
||||
if (targetPermanent instanceof PermanentToken) {
|
||||
copySetAndCardNumber(((PermanentToken) targetPermanent).getToken(), newSetCode, newCardNumber, newTokenType);
|
||||
} else if (targetPermanent instanceof PermanentCard) {
|
||||
targetPermanent.setExpansionSetCode(newSetCode);
|
||||
targetPermanent.setCardNumber(newCardNumber);
|
||||
} 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, Integer newTokenType) {
|
||||
targetToken.setOriginalExpansionSetCode(newSetCode);
|
||||
targetToken.setExpansionSetCodeForImage(newSetCode);
|
||||
targetToken.setOriginalCardNumber(newCardNumber);
|
||||
targetToken.setTokenType(newTokenType);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue