forked from External/mage
GUI: improved double faced tokens:
- added tokens support in test render dialog; - improved PT drawing; - fixed broken second side switch button (related to #10231); - fixed miss override in TokenImpl (all override with backFace must be removed, see todo);
This commit is contained in:
parent
8cb89a9a98
commit
583c5fe4e9
13 changed files with 270 additions and 140 deletions
|
|
@ -60,10 +60,9 @@ public class TransformAbility extends SimpleStaticAbility {
|
|||
for (SuperType type : sourceCard.getSuperType()) {
|
||||
permanent.addSuperType(type);
|
||||
}
|
||||
if (sourceCard instanceof Card) {
|
||||
permanent.setExpansionSetCode(((Card) sourceCard).getExpansionSetCode());
|
||||
}
|
||||
|
||||
CardUtil.copySetAndCardNumber(permanent, sourceCard);
|
||||
|
||||
permanent.getAbilities().clear();
|
||||
for (Ability ability : sourceCard.getAbilities()) {
|
||||
// source == null -- call from init card (e.g. own abilities)
|
||||
|
|
|
|||
|
|
@ -609,7 +609,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
|
|||
return true;
|
||||
}
|
||||
|
||||
protected MageObject getOtherFace() {
|
||||
public MageObject getOtherFace() {
|
||||
return transformed ? this.getMainCard() : this.getMainCard().getSecondCardFace();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ public class PermanentToken extends PermanentImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected MageObject getOtherFace() {
|
||||
public MageObject getOtherFace() {
|
||||
return this.transformed ? token : this.token.getBackFace();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import java.util.Arrays;
|
|||
*/
|
||||
public class Phyrexian00Token extends TokenImpl {
|
||||
|
||||
Phyrexian00Token() {
|
||||
public Phyrexian00Token() {
|
||||
super("Phyrexian Token", "0/0 Phyrexian artifact creature token");
|
||||
cardType.add(CardType.ARTIFACT);
|
||||
cardType.add(CardType.CREATURE);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.game.permanent.token;
|
||||
|
||||
import mage.MageObject;
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
ability.setSourceId(this.getId());
|
||||
abilities.add(ability);
|
||||
abilities.addAll(ability.getSubAbilities());
|
||||
|
||||
// TODO: remove all override and backFace changes (bug example: active transform ability in back face)
|
||||
if (backFace != null) {
|
||||
backFace.addAbility(ability);
|
||||
}
|
||||
|
|
@ -443,6 +445,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.setStartingLoyalty(startingLoyalty);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStartingDefense(int intArg) {
|
||||
if (backFace != null) {
|
||||
backFace.setStartingDefense(intArg);
|
||||
|
|
@ -481,6 +484,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
return backFace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void retainAllArtifactSubTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.retainAllArtifactSubTypes(game);
|
||||
|
|
@ -488,6 +492,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.retainAllArtifactSubTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void retainAllEnchantmentSubTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.retainAllEnchantmentSubTypes(game);
|
||||
|
|
@ -495,6 +500,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.retainAllEnchantmentSubTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSuperType(SuperType superType) {
|
||||
if (backFace != null) {
|
||||
backFace.addSuperType(superType);
|
||||
|
|
@ -502,6 +508,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.addSuperType(superType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSuperType(SuperType superType) {
|
||||
if (backFace != null) {
|
||||
backFace.removeSuperType(superType);
|
||||
|
|
@ -509,6 +516,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeSuperType(superType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCardType(CardType... cardTypes) {
|
||||
if (backFace != null) {
|
||||
backFace.addCardType(cardTypes);
|
||||
|
|
@ -516,6 +524,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.addCardType(cardTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCardType(CardType... cardTypes) {
|
||||
if (backFace != null) {
|
||||
backFace.removeCardType(cardTypes);
|
||||
|
|
@ -523,6 +532,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeCardType(cardTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllCardTypes() {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllCardTypes();
|
||||
|
|
@ -530,6 +540,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllCardTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllCardTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllCardTypes(game);
|
||||
|
|
@ -537,6 +548,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllCardTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSubType(SubType... subTypes) {
|
||||
if (backFace != null) {
|
||||
backFace.addSubType(subTypes);
|
||||
|
|
@ -544,6 +556,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.addSubType(subTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllSubTypes(Game game, SubTypeSet subTypeSet) {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllSubTypes(game, subTypeSet);
|
||||
|
|
@ -551,6 +564,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllSubTypes(game, subTypeSet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllSubTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllSubTypes(game);
|
||||
|
|
@ -558,6 +572,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllSubTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void retainAllLandSubTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.retainAllLandSubTypes(game);
|
||||
|
|
@ -565,6 +580,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.retainAllLandSubTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllCreatureTypes(Game game) {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllCreatureTypes(game);
|
||||
|
|
@ -572,6 +588,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllCreatureTypes(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAllCreatureTypes() {
|
||||
if (backFace != null) {
|
||||
backFace.removeAllCreatureTypes();
|
||||
|
|
@ -579,6 +596,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeAllCreatureTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSubType(Game game, SubType subType) {
|
||||
if (backFace != null) {
|
||||
backFace.removeSubType(game, subType);
|
||||
|
|
@ -586,6 +604,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removeSubType(game, subType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIsAllCreatureTypes(boolean value) {
|
||||
if (backFace != null) {
|
||||
backFace.setIsAllCreatureTypes(value);
|
||||
|
|
@ -593,6 +612,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.setIsAllCreatureTypes(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePTCDA() {
|
||||
if (backFace != null) {
|
||||
backFace.removePTCDA();
|
||||
|
|
@ -600,13 +620,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.removePTCDA();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
if (backFace != null) {
|
||||
backFace.getName();
|
||||
}
|
||||
return super.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
if (backFace != null) {
|
||||
backFace.setName(name);
|
||||
|
|
@ -614,6 +628,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
|||
super.setName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setColor(ObjectColor color) {
|
||||
if (backFace != null) {
|
||||
backFace.setColor(color);
|
||||
|
|
|
|||
|
|
@ -41,22 +41,22 @@ public final class ZombieToken extends TokenImpl {
|
|||
public void setExpansionSetCodeForImage(String code) {
|
||||
super.setExpansionSetCodeForImage(code);
|
||||
|
||||
if (getOriginalExpansionSetCode().equals("ISD")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("ISD")) {
|
||||
this.setTokenType(RandomUtil.nextInt(3) + 1);
|
||||
}
|
||||
if (getOriginalExpansionSetCode().equals("C14")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C14")) {
|
||||
this.setTokenType(1);
|
||||
}
|
||||
if (getOriginalExpansionSetCode().equals("EMN")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMN")) {
|
||||
this.setTokenType(RandomUtil.nextInt(3) + 1);
|
||||
}
|
||||
if (getOriginalExpansionSetCode().equals("C19")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C19")) {
|
||||
this.setTokenType(RandomUtil.nextInt(2) + 1);
|
||||
}
|
||||
if (getOriginalExpansionSetCode().equals("MIC")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("MIC")) {
|
||||
this.setTokenType(1);
|
||||
}
|
||||
if (getOriginalExpansionSetCode().equals("VOW")) {
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("VOW")) {
|
||||
this.setTokenType(1);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import mage.constants.ColoredManaSymbol;
|
|||
import mage.constants.ManaType;
|
||||
import mage.filter.FilterMana;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.*;
|
||||
|
|
@ -638,6 +639,10 @@ public final class ManaUtil {
|
|||
return getColorIdentity(card.getColor(), String.join("", card.getManaCostSymbols()), card.getRules(), secondSide);
|
||||
}
|
||||
|
||||
public static FilterMana getColorIdentity(Token token) {
|
||||
return getColorIdentity(token.getColor(), String.join("", token.getManaCostSymbols()), token.getAbilities().getRules(token.getName()), null);
|
||||
}
|
||||
|
||||
public static int getColorIdentityHash(FilterMana colorIdentity) {
|
||||
int hash = 3;
|
||||
hash = 23 * hash + (colorIdentity.isWhite() ? 1 : 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue