diff --git a/src/magic/data/CardProperty.java b/src/magic/data/CardProperty.java index 4db31886ed..7e1c7d0d76 100644 --- a/src/magic/data/CardProperty.java +++ b/src/magic/data/CardProperty.java @@ -220,6 +220,11 @@ public enum CardProperty { card.setTransformCardName(value); } }, + SPLIT() { + public void setProperty(final MagicCardDefinition card, final String value) { + card.setSplitCardName(value); + } + }, ORACLE() { public void setProperty(final MagicCardDefinition card, final String value) { card.setText(value); diff --git a/src/magic/model/MagicCard.java b/src/magic/model/MagicCard.java index 53302e2907..3a44baf7cf 100644 --- a/src/magic/model/MagicCard.java +++ b/src/magic/model/MagicCard.java @@ -172,6 +172,10 @@ public class MagicCard return getCardDefinition().isFlipCard(); } + public boolean isSplitCard() { + return getCardDefinition().isSplitCard(); + } + public boolean isNameless() { return getName().isEmpty(); } diff --git a/src/magic/model/MagicCardDefinition.java b/src/magic/model/MagicCardDefinition.java index 4661eebe1b..a981d43e3a 100644 --- a/src/magic/model/MagicCardDefinition.java +++ b/src/magic/model/MagicCardDefinition.java @@ -88,12 +88,14 @@ public class MagicCardDefinition implements MagicAbilityStore, IRenderableCard { private MagicCardDefinition flipCardDefinition; private MagicCardDefinition transformCardDefinition; + private MagicCardDefinition splitCardDefinition; private String abilityProperty; private String requiresGroovy; private String effectProperty; private String flipCardName; private String transformCardName; + private String splitCardName; public MagicCardDefinition() { initialize(); @@ -128,6 +130,10 @@ public class MagicCardDefinition implements MagicAbilityStore, IRenderableCard { transformCardName = value; } + public void setSplitCardName(final String value) { + splitCardName = value; + } + public void setHidden() { hidden = true; } @@ -177,6 +183,9 @@ public class MagicCardDefinition implements MagicAbilityStore, IRenderableCard { if (getTransformedDefinition().isHidden()) { transformCardDefinition.loadAbilities(); } + if (getSplitDefinition() != UNKNOWN) { + splitCardDefinition.loadAbilities(); + } } public boolean isValid() { @@ -381,6 +390,15 @@ public class MagicCardDefinition implements MagicAbilityStore, IRenderableCard { return transformCardDefinition; } + public MagicCardDefinition getSplitDefinition() { + if (splitCardDefinition == null) { + splitCardDefinition = isSplitCard() ? + CardDefinitions.getMissingOrCard(splitCardName) : + UNKNOWN; + } + return splitCardDefinition; + } + public MagicCardDefinition getCardDefinition() { return this; } @@ -433,6 +451,10 @@ public class MagicCardDefinition implements MagicAbilityStore, IRenderableCard { return transformCardName != null; } + public boolean isSplitCard() { + return splitCardName != null; + } + public boolean hasMultipleAspects() { return isFlipCard() || isDoubleFaced(); } diff --git a/src/magic/model/MagicPermanent.java b/src/magic/model/MagicPermanent.java index 0e832a8169..2bbe2ce85c 100644 --- a/src/magic/model/MagicPermanent.java +++ b/src/magic/model/MagicPermanent.java @@ -1145,6 +1145,10 @@ public class MagicPermanent extends MagicObjectImpl implements MagicSource, Magi return hasState(MagicPermanentState.Flipped); } + public boolean isSplitCard() { + return false; + } + public boolean isTransformed() { return hasState(MagicPermanentState.Transformed); } diff --git a/src/magic/ui/cardBuilder/IRenderableCard.java b/src/magic/ui/cardBuilder/IRenderableCard.java index 8c5af497e9..daf742ed13 100644 --- a/src/magic/ui/cardBuilder/IRenderableCard.java +++ b/src/magic/ui/cardBuilder/IRenderableCard.java @@ -27,6 +27,7 @@ public interface IRenderableCard { boolean hasType(MagicType type); boolean isToken(); boolean isFlipCard(); + boolean isSplitCard(); boolean isDoubleFaced(); boolean hasAbility(MagicAbility ability); boolean isPlaneswalker();