From 044f60b4d1386492bdfd014f2d23c2956d3dd362 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sun, 19 Mar 2017 13:05:06 +0000 Subject: [PATCH] SpellAbility & CardTraitBase: move hasParam and getParam into CardTraitBase add CardTraitPredicates as base for SpellAbilityPredicates --- .gitattributes | 1 + .../src/main/java/forge/ai/AiController.java | 2 +- .../main/java/forge/game/CardTraitBase.java | 13 ++++++++- .../java/forge/game/CardTraitPredicates.java | 27 +++++++++++++++++++ .../forge/game/spellability/SpellAbility.java | 11 -------- .../spellability/SpellAbilityPredicates.java | 12 ++------- 6 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 forge-game/src/main/java/forge/game/CardTraitPredicates.java diff --git a/.gitattributes b/.gitattributes index 72df2350bd2..f1a01e70b42 100644 --- a/.gitattributes +++ b/.gitattributes @@ -300,6 +300,7 @@ forge-game/.settings/org.eclipse.m2e.core.prefs -text forge-game/pom.xml -text forge-game/src/main/java/forge/GameCommand.java svneol=native#text/plain forge-game/src/main/java/forge/game/CardTraitBase.java -text +forge-game/src/main/java/forge/game/CardTraitPredicates.java -text svneol=unset#text/plain forge-game/src/main/java/forge/game/Direction.java -text forge-game/src/main/java/forge/game/Game.java -text forge-game/src/main/java/forge/game/GameAction.java svneol=native#text/plain diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index e11ba26938f..4e4cfd75e3e 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1596,7 +1596,7 @@ public class AiController { } // TODO move to more common place - private List filterList(List input, Predicate pred) { + private List filterList(List input, Predicate pred) { List filtered = Lists.newArrayList(Iterables.filter(input, pred)); input.removeAll(filtered); return filtered; diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java index 16f01b88387..80e5fa09425 100644 --- a/forge-game/src/main/java/forge/game/CardTraitBase.java +++ b/forge-game/src/main/java/forge/game/CardTraitBase.java @@ -80,7 +80,18 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView { public final Map getMapParams() { return this.mapParams; } - + + public final String getParamOrDefault(String key, String defaultValue) { + return hasParam(key) ? getParam(key) : defaultValue; + } + + public String getParam(String key) { + return mapParams.get(key); + } + + public boolean hasParam(String key) { + return mapParams.containsKey(key); + } /** *

* Getter for the field mapParams. diff --git a/forge-game/src/main/java/forge/game/CardTraitPredicates.java b/forge-game/src/main/java/forge/game/CardTraitPredicates.java new file mode 100644 index 00000000000..3e9115aee38 --- /dev/null +++ b/forge-game/src/main/java/forge/game/CardTraitPredicates.java @@ -0,0 +1,27 @@ +package forge.game; + +import com.google.common.base.Predicate; + +public class CardTraitPredicates { + + public static final Predicate hasParam(final String name) { + return new Predicate() { + @Override + public boolean apply(final CardTraitBase sa) { + return sa.hasParam(name); + } + }; + } + + public static final Predicate hasParam(final String name, final String val) { + return new Predicate() { + @Override + public boolean apply(final CardTraitBase sa) { + if (!sa.hasParam(name)) { + return false; + } + return val.equals(sa.getParam(name)); + } + }; + } +} diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 092ccf8bb15..cec27c99bbb 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -398,17 +398,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit this.mayPlayOriginal = mayPlayOriginal; } - public String getParamOrDefault(String key, String defaultValue) { - return mapParams.containsKey(key) ? mapParams.get(key) : defaultValue; - } - - public String getParam(String key) { - return mapParams.get(key); - } - public boolean hasParam(String key) { - return mapParams.containsKey(key); - } - // If this is not null, then ability was made in a factory public ApiType getApi() { return api; diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityPredicates.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityPredicates.java index 9635f24a7e2..0a1a216f995 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityPredicates.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityPredicates.java @@ -2,9 +2,10 @@ package forge.game.spellability; import com.google.common.base.Predicate; +import forge.game.CardTraitPredicates; import forge.game.ability.ApiType; -public final class SpellAbilityPredicates { +public final class SpellAbilityPredicates extends CardTraitPredicates { public static final Predicate isApi(final ApiType type) { return new Predicate() { @Override @@ -23,15 +24,6 @@ public final class SpellAbilityPredicates { }; } - public static final Predicate hasParam(final String name) { - return new Predicate() { - @Override - public boolean apply(final SpellAbility sa) { - return sa.hasParam(name); - } - }; - } - public static final Predicate isMandatory() { return new Predicate() { @Override