diff --git a/src/magic/data/CardDefinitions.java b/src/magic/data/CardDefinitions.java index be9658eb4f..8c124f3b5a 100644 --- a/src/magic/data/CardDefinitions.java +++ b/src/magic/data/CardDefinitions.java @@ -73,18 +73,13 @@ public class CardDefinitions { setProperty(cardDefinition, key, content.getProperty(key)); } - //add card specific code - if (cardDefinition.hasCode()) { - addCardSpecificCode(cardDefinition); - } - return cardDefinition; } - + //link to companion object containing static variables - private static void addCardSpecificCode(final MagicCardDefinition cardDefinition) { + static void addCardSpecificCode(final MagicCardDefinition cardDefinition, final String cardName) { try { //reflection - final Class c = Class.forName("magic.card." + cardDefinition.getCanonicalName()); + final Class c = Class.forName("magic.card." + getCanonicalName(cardName)); for (final Field field : c.getFields()) { final MagicChangeCardDefinition ccd = (MagicChangeCardDefinition)field.get(null); ccd.change(cardDefinition); @@ -96,6 +91,10 @@ public class CardDefinitions { } } + private static String getCanonicalName(String fullName) { + return fullName.replaceAll("[^A-Za-z0-9]", "_"); + } + private static void loadCardDefinition(final File file) { try { final MagicCardDefinition cdef = prop2carddef(FileIO.toProp(file)); diff --git a/src/magic/data/CardProperty.java b/src/magic/data/CardProperty.java index 1ce68bd23f..96087bd2a4 100644 --- a/src/magic/data/CardProperty.java +++ b/src/magic/data/CardProperty.java @@ -168,7 +168,8 @@ public enum CardProperty { }, REQUIRES_CARD_CODE() { void setProperty(final MagicCardDefinition card, final String value) { - card.setHasCode(); + final String cardName = !value.isEmpty() ? value : card.getFullName(); + CardDefinitions.addCardSpecificCode(card, cardName); } }; diff --git a/src/magic/model/MagicCardDefinition.java b/src/magic/model/MagicCardDefinition.java index beef60a4c9..a4377fd91e 100644 --- a/src/magic/model/MagicCardDefinition.java +++ b/src/magic/model/MagicCardDefinition.java @@ -75,7 +75,6 @@ public class MagicCardDefinition { private int score=-1; // not initialized private MagicRarity rarity; private boolean token; - private boolean hasCode; private int typeFlags; private EnumSet subTypeFlags = EnumSet.noneOf(MagicSubType.class); private int colorFlags; @@ -144,22 +143,10 @@ public class MagicCardDefinition { return fullName; } - public String getCanonicalName() { - return fullName.replaceAll("[^A-Za-z0-9]", "_"); - } - public void setFullName(final String name) { fullName = name; } - public void setHasCode() { - hasCode = true; - } - - public boolean hasCode() { - return hasCode; - } - public void setIndex(final int index) { this.index=index; }