SpellAbility & CardTraitBase: move hasParam and getParam into CardTraitBase

add CardTraitPredicates as base for SpellAbilityPredicates
This commit is contained in:
Hanmac
2017-03-19 13:05:06 +00:00
parent 3c13d80ee4
commit 044f60b4d1
6 changed files with 43 additions and 23 deletions

1
.gitattributes vendored
View File

@@ -300,6 +300,7 @@ forge-game/.settings/org.eclipse.m2e.core.prefs -text
forge-game/pom.xml -text forge-game/pom.xml -text
forge-game/src/main/java/forge/GameCommand.java svneol=native#text/plain 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/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/Direction.java -text
forge-game/src/main/java/forge/game/Game.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 forge-game/src/main/java/forge/game/GameAction.java svneol=native#text/plain

View File

@@ -1596,7 +1596,7 @@ public class AiController {
} }
// TODO move to more common place // TODO move to more common place
private <T> List<T> filterList(List<T> input, Predicate<T> pred) { private <T> List<T> filterList(List<T> input, Predicate<? super T> pred) {
List<T> filtered = Lists.newArrayList(Iterables.filter(input, pred)); List<T> filtered = Lists.newArrayList(Iterables.filter(input, pred));
input.removeAll(filtered); input.removeAll(filtered);
return filtered; return filtered;

View File

@@ -80,7 +80,18 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView {
public final Map<String, String> getMapParams() { public final Map<String, String> getMapParams() {
return this.mapParams; 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);
}
/** /**
* <p> * <p>
* Getter for the field <code>mapParams</code>. * Getter for the field <code>mapParams</code>.

View File

@@ -0,0 +1,27 @@
package forge.game;
import com.google.common.base.Predicate;
public class CardTraitPredicates {
public static final Predicate<CardTraitBase> hasParam(final String name) {
return new Predicate<CardTraitBase>() {
@Override
public boolean apply(final CardTraitBase sa) {
return sa.hasParam(name);
}
};
}
public static final Predicate<CardTraitBase> hasParam(final String name, final String val) {
return new Predicate<CardTraitBase>() {
@Override
public boolean apply(final CardTraitBase sa) {
if (!sa.hasParam(name)) {
return false;
}
return val.equals(sa.getParam(name));
}
};
}
}

View File

@@ -398,17 +398,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
this.mayPlayOriginal = mayPlayOriginal; 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 // If this is not null, then ability was made in a factory
public ApiType getApi() { public ApiType getApi() {
return api; return api;

View File

@@ -2,9 +2,10 @@ package forge.game.spellability;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import forge.game.CardTraitPredicates;
import forge.game.ability.ApiType; import forge.game.ability.ApiType;
public final class SpellAbilityPredicates { public final class SpellAbilityPredicates extends CardTraitPredicates {
public static final Predicate<SpellAbility> isApi(final ApiType type) { public static final Predicate<SpellAbility> isApi(final ApiType type) {
return new Predicate<SpellAbility>() { return new Predicate<SpellAbility>() {
@Override @Override
@@ -23,15 +24,6 @@ public final class SpellAbilityPredicates {
}; };
} }
public static final Predicate<SpellAbility> hasParam(final String name) {
return new Predicate<SpellAbility>() {
@Override
public boolean apply(final SpellAbility sa) {
return sa.hasParam(name);
}
};
}
public static final Predicate<SpellAbility> isMandatory() { public static final Predicate<SpellAbility> isMandatory() {
return new Predicate<SpellAbility>() { return new Predicate<SpellAbility>() {
@Override @Override