2012-05-23 06:12:04 -07:00
|
|
|
package magic.data;
|
|
|
|
|
2015-12-19 15:53:54 -08:00
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
import magic.exception.ScriptParseException;
|
2012-05-23 06:12:04 -07:00
|
|
|
import magic.model.MagicAbility;
|
|
|
|
import magic.model.MagicCardDefinition;
|
2012-09-26 23:11:44 -07:00
|
|
|
import magic.model.MagicColor;
|
2012-05-23 06:12:04 -07:00
|
|
|
import magic.model.MagicManaCost;
|
|
|
|
import magic.model.MagicStaticType;
|
2012-09-26 23:11:44 -07:00
|
|
|
import magic.model.MagicSubType;
|
|
|
|
import magic.model.MagicType;
|
2012-05-23 06:12:04 -07:00
|
|
|
import magic.model.event.MagicPlayAuraEvent;
|
2012-08-26 06:05:40 -07:00
|
|
|
import magic.model.event.MagicSpellCardEvent;
|
2012-09-26 23:11:44 -07:00
|
|
|
import magic.model.event.MagicTiming;
|
2012-05-23 06:12:04 -07:00
|
|
|
import magic.model.mstatic.MagicStatic;
|
2015-03-10 06:44:17 -07:00
|
|
|
|
2012-05-23 06:12:04 -07:00
|
|
|
public enum CardProperty {
|
2013-08-27 19:44:09 -07:00
|
|
|
|
2012-08-26 01:56:30 -07:00
|
|
|
IMAGE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 06:12:04 -07:00
|
|
|
card.setImageURL(value);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
VALUE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setValue(Double.parseDouble(value));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
REMOVAL() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setRemoval(Integer.parseInt(value));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
RARITY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setRarity(value.charAt(0));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
TYPE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-09-28 01:09:47 -07:00
|
|
|
final String[] names=value.split(",");
|
2012-08-26 01:56:30 -07:00
|
|
|
for (final String name : names) {
|
|
|
|
card.addType(MagicType.getType(name));
|
|
|
|
}
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
SUBTYPE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-08-28 18:57:18 -07:00
|
|
|
card.setSubTypes(value.split(COMMA));
|
2017-01-31 05:47:24 -08:00
|
|
|
card.setSubTypeText(value);
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
COLOR() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setColors(value);
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
COST() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setCost(MagicManaCost.create(value));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
MANA() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setManaSourceText(value);
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
PT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 06:12:04 -07:00
|
|
|
final String[] pt = value.split("/");
|
2014-08-02 01:32:56 -07:00
|
|
|
final int p = pt[0].contains("*") ? 0 : Integer.parseInt(pt[0]);
|
|
|
|
final int t = pt[1].contains("*") ? 0 : Integer.parseInt(pt[1]);
|
|
|
|
card.setPowerToughness(p, t);
|
2015-12-19 15:53:54 -08:00
|
|
|
card.setPowerToughnessText(value);
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
ABILITY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-10-21 23:40:17 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setAbilityProperty(value);
|
|
|
|
}
|
|
|
|
},
|
2015-06-20 21:23:45 -07:00
|
|
|
LOYALTY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2015-06-20 21:23:45 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setStartingLoyalty(Integer.parseInt(value));
|
|
|
|
}
|
|
|
|
},
|
2015-03-20 22:41:26 -07:00
|
|
|
LOAD_ABILITY_COMMA() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2015-03-20 22:41:26 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
final String[] names=value.split(COMMA);
|
|
|
|
for (final String name : names) {
|
|
|
|
MagicAbility.getAbility(name).addAbility(card, name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2013-10-21 23:40:17 -07:00
|
|
|
LOAD_ABILITY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-08-28 18:57:18 -07:00
|
|
|
final String[] names=value.split(SEMI);
|
2012-08-26 01:56:30 -07:00
|
|
|
for (final String name : names) {
|
2015-03-20 22:41:26 -07:00
|
|
|
try {
|
|
|
|
MagicAbility.getAbility(name).addAbility(card, name);
|
|
|
|
} catch (final ScriptParseException origPE) {
|
|
|
|
try {
|
|
|
|
LOAD_ABILITY_COMMA.setProperty(card, name);
|
|
|
|
} catch (final ScriptParseException newPE) {
|
|
|
|
throw origPE;
|
|
|
|
}
|
|
|
|
}
|
2012-08-26 01:56:30 -07:00
|
|
|
}
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
2013-12-16 09:10:27 -08:00
|
|
|
SET_PT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2014-02-20 03:58:39 -08:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
final String[] pt = value.split("/");
|
|
|
|
card.add(MagicStatic.genPTSetStatic(Integer.parseInt(pt[0]), Integer.parseInt(pt[1])));
|
|
|
|
}
|
2013-12-16 09:10:27 -08:00
|
|
|
},
|
2012-05-23 06:12:04 -07:00
|
|
|
GIVEN_ABILITY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2015-03-02 05:26:01 -08:00
|
|
|
card.add(MagicStatic.linkedABStatic(MagicAbility.getAbilityList(value.split(SEMI))));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
GIVEN_SUBTYPE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-08-28 18:57:18 -07:00
|
|
|
card.add(MagicStatic.genSTStatic(MagicSubType.getSubTypes(value.split(COMMA))));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
2013-05-12 22:30:45 -07:00
|
|
|
GIVEN_TYPE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-05-12 22:30:45 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-08-28 18:57:18 -07:00
|
|
|
card.add(MagicStatic.genTypeStatic(MagicType.getTypes(value.split(COMMA))));
|
2013-05-12 22:30:45 -07:00
|
|
|
}
|
|
|
|
},
|
2012-05-23 06:12:04 -07:00
|
|
|
GIVEN_COLOR() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-01-14 21:17:52 -08:00
|
|
|
card.add(MagicStatic.AddLinkedColor(MagicColor.getFlags(value)));
|
|
|
|
}
|
|
|
|
},
|
|
|
|
OVERWRITE_COLOR() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-01-14 21:17:52 -08:00
|
|
|
card.add(MagicStatic.SetLinkedColor(MagicColor.getFlags(value)));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
STATIC() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setStaticType(MagicStaticType.getStaticTypeFor(value));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
TIMING() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-08-26 01:56:30 -07:00
|
|
|
card.setTiming(MagicTiming.getTimingFor(value));
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
2015-03-10 06:44:17 -07:00
|
|
|
IMAGE_UPDATED() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2015-03-14 12:35:43 -07:00
|
|
|
final SimpleDateFormat format = new SimpleDateFormat(IMAGE_UPDATED_FORMAT);
|
2015-03-10 06:44:17 -07:00
|
|
|
try {
|
|
|
|
card.setImageUpdated(format.parse(value));
|
|
|
|
} catch (final ParseException pe) {
|
|
|
|
throw new RuntimeException(pe);
|
2012-08-26 01:56:30 -07:00
|
|
|
}
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
MANA_OR_COMBAT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 06:12:04 -07:00
|
|
|
card.setExcludeManaOrCombat();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
ENCHANT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 06:12:04 -07:00
|
|
|
card.add(MagicPlayAuraEvent.create(value));
|
|
|
|
}
|
|
|
|
},
|
2012-05-23 08:17:52 -07:00
|
|
|
TOKEN() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 08:17:52 -07:00
|
|
|
card.setToken();
|
2012-10-06 00:43:11 -07:00
|
|
|
card.setName(value);
|
2012-05-23 06:12:04 -07:00
|
|
|
}
|
|
|
|
},
|
2012-05-23 07:32:10 -07:00
|
|
|
NAME() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-10-06 00:43:11 -07:00
|
|
|
assert card.getName() == null;
|
2015-05-09 07:01:39 -07:00
|
|
|
assert card.getDistinctName() == null;
|
2015-09-08 05:49:54 -07:00
|
|
|
final String[] names = value.split(SEMI);
|
|
|
|
card.setName(names[0]);
|
|
|
|
card.setDistinctName(names[names.length - 1]);
|
2012-05-23 08:17:52 -07:00
|
|
|
}
|
|
|
|
},
|
2012-08-26 06:05:40 -07:00
|
|
|
EFFECT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2014-08-15 01:18:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setEffectProperty(value);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
LOAD_EFFECT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2015-03-15 02:18:48 -07:00
|
|
|
card.add(MagicSpellCardEvent.create(card, value));
|
2012-08-26 06:05:40 -07:00
|
|
|
}
|
|
|
|
},
|
2013-01-05 22:14:57 -08:00
|
|
|
REQUIRES_GROOVY_CODE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2013-03-30 03:15:20 -07:00
|
|
|
card.setRequiresGroovy(value);
|
2013-03-29 23:52:54 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
LOAD_GROOVY_CODE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2015-05-09 07:01:39 -07:00
|
|
|
final String cardName = !value.isEmpty() ? value : card.getDistinctName();
|
2013-08-28 18:57:18 -07:00
|
|
|
final String[] names = cardName.split(SEMI);
|
2013-02-03 00:45:48 -08:00
|
|
|
for (final String name : names) {
|
|
|
|
CardDefinitions.addCardSpecificGroovyCode(card, name);
|
|
|
|
}
|
2013-01-05 22:14:57 -08:00
|
|
|
}
|
2013-02-03 00:45:48 -08:00
|
|
|
},
|
2014-08-05 11:43:05 -07:00
|
|
|
FLIP() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2015-12-23 20:45:50 -08:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setFlipCardName(value);
|
|
|
|
}
|
2014-08-05 11:43:05 -07:00
|
|
|
},
|
2014-08-06 08:29:43 -07:00
|
|
|
TRANSFORM() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2015-12-23 20:45:50 -08:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setTransformCardName(value);
|
|
|
|
}
|
2014-08-06 08:29:43 -07:00
|
|
|
},
|
2016-07-18 05:38:56 -07:00
|
|
|
MELD(){
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2016-07-18 05:38:56 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setMeldCardNames(value.split(SEMI));
|
|
|
|
}
|
|
|
|
},
|
2016-01-31 07:06:24 -08:00
|
|
|
SPLIT() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2016-01-31 07:06:24 -08:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setSplitCardName(value);
|
|
|
|
}
|
|
|
|
},
|
2016-01-31 08:49:00 -08:00
|
|
|
SECOND_HALF() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2016-01-31 08:49:00 -08:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setSecondHalf();
|
|
|
|
}
|
|
|
|
},
|
2014-05-11 11:31:52 -07:00
|
|
|
ORACLE() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2014-05-11 11:31:52 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setText(value);
|
|
|
|
}
|
2014-08-05 14:26:47 -07:00
|
|
|
},
|
|
|
|
HIDDEN() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2014-08-05 14:26:47 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setHidden();
|
|
|
|
}
|
2015-09-10 18:53:57 -07:00
|
|
|
},
|
|
|
|
OVERLAY() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2015-09-10 18:53:57 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
|
|
|
card.setOverlay();
|
|
|
|
}
|
|
|
|
},
|
2016-07-01 21:45:09 -07:00
|
|
|
STATUS() {
|
2017-06-16 20:19:03 -07:00
|
|
|
@Override
|
2016-07-01 21:45:09 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2016-07-18 09:41:46 -07:00
|
|
|
card.setStatus(value);
|
2016-07-01 21:45:09 -07:00
|
|
|
}
|
|
|
|
},
|
2013-01-05 22:14:57 -08:00
|
|
|
;
|
2013-06-23 18:33:35 -07:00
|
|
|
|
2015-03-14 12:35:43 -07:00
|
|
|
public static final String IMAGE_UPDATED_FORMAT = "yyyy-MM-dd";
|
|
|
|
|
2013-08-28 18:57:18 -07:00
|
|
|
private static final String SEMI = "\\s*;\\s*";
|
|
|
|
private static final String COMMA = "\\s*,\\s*";
|
2013-03-29 23:52:54 -07:00
|
|
|
public void setProperty(final MagicCardDefinition card, final String value) {
|
2012-05-23 06:12:04 -07:00
|
|
|
//do nothing
|
|
|
|
}
|
|
|
|
}
|