1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-02-19 11:07:01 +00:00

[filters] replaced Power and Toughness conditions with Predicates

This commit is contained in:
North 2012-07-10 23:44:45 +03:00
parent 85b22de4b0
commit dfd2413b89
21 changed files with 44 additions and 97 deletions

View file

@ -40,6 +40,7 @@ import mage.abilities.effects.common.CantCounterSourceEffect;
import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.PowerPredicate;
/**
@ -52,8 +53,7 @@ public class SpellbreakerBehemoth extends CardImpl<SpellbreakerBehemoth> {
static {
filter.getCardType().add(CardType.CREATURE);
filter.setPower(4);
filter.setPowerComparison(Filter.ComparisonType.GreaterThan);
filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 4));
}
public SpellbreakerBehemoth(UUID ownerId) {

View file

@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.common.FilterAttackingCreature;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetAttackingCreature;
/**
@ -45,8 +46,7 @@ public class TerashisVerdict extends CardImpl<TerashisVerdict> {
private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with power 3 or less");
static {
filter.setPower(4);
filter.setPowerComparison(Filter.ComparisonType.LessThan);
filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 4));
}
public TerashisVerdict(UUID ownerId) {

View file

@ -45,6 +45,7 @@ import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -59,8 +60,7 @@ public class SoratamiMirrorGuard extends CardImpl<SoratamiMirrorGuard> {
static {
filter.getCardType().add(CardType.LAND);
filter.setScopeCardType(Filter.ComparisonScope.Any);
filterCreature.setPower(3);
filterCreature.setPowerComparison(Filter.ComparisonType.LessThan);
filterCreature.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3));
}
public SoratamiMirrorGuard(UUID ownerId) {

View file

@ -42,6 +42,7 @@ import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -53,8 +54,7 @@ public class BeaconBehemoth extends CardImpl<BeaconBehemoth> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public BeaconBehemoth (UUID ownerId) {

View file

@ -38,6 +38,7 @@ import mage.abilities.effects.common.RegenerateTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -49,8 +50,7 @@ public class VagrantPlowbeasts extends CardImpl<VagrantPlowbeasts> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public VagrantPlowbeasts(UUID ownerId) {

View file

@ -27,15 +27,15 @@
*/
package mage.sets.innistrad;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.target.TargetPermanent;
import java.util.UUID;
import mage.filter.Filter;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.TargetPermanent;
/**
* @author nantuko
@ -45,8 +45,7 @@ public class SmiteTheMonstrous extends CardImpl<SmiteTheMonstrous> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
static {
filter.setPower(3);
filter.setPowerComparison(Filter.ComparisonType.GreaterThan);
filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 3));
}
public SmiteTheMonstrous(UUID ownerId) {

View file

@ -36,6 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -47,8 +48,7 @@ public class BalaGedScorpion extends CardImpl<BalaGedScorpion> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 1 or less");
static {
filter.setPower(2);
filter.setPowerComparison(ComparisonType.LessThan);
filter.add(new PowerPredicate(ComparisonType.LessThan, 2));
}
public BalaGedScorpion(UUID ownerId) {

View file

@ -42,6 +42,7 @@ import mage.abilities.keyword.UnblockableAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -50,11 +51,10 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class GoblinTunneler extends CardImpl<GoblinTunneler> {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
static {
filter.setPower(3);
filter.setPowerComparison(ComparisonType.LessThan);
filter.add(new PowerPredicate(ComparisonType.LessThan, 3));
}
public GoblinTunneler(UUID ownerId) {

View file

@ -39,6 +39,7 @@ import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -50,8 +51,7 @@ public class KorLineSlinger extends CardImpl<KorLineSlinger> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 3 or less");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.LessThan);
filter.add(new PowerPredicate(ComparisonType.LessThan, 4));
}
public KorLineSlinger(UUID ownerId) {

View file

@ -34,6 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -49,8 +50,7 @@ public class PuncturingLight extends CardImpl<PuncturingLight> {
filter.setUseAttacking(true);
filter.setBlocking(true);
filter.setUseBlocking(true);
filter.setPower(4);
filter.setPowerComparison(ComparisonType.LessThan);
filter.add(new PowerPredicate(ComparisonType.LessThan, 4));
}
public PuncturingLight(UUID ownerId) {

View file

@ -40,6 +40,7 @@ import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -51,8 +52,7 @@ public class BloodthornTaunter extends CardImpl<BloodthornTaunter> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public BloodthornTaunter(UUID ownerId) {

View file

@ -41,6 +41,7 @@ import mage.abilities.effects.PreventionEffectImpl;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.target.common.TargetCreaturePermanent;
@ -54,8 +55,7 @@ public class Godtoucher extends CardImpl<Godtoucher> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public Godtoucher(UUID ownerId) {

View file

@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
/**
*
@ -50,8 +51,7 @@ public class GustriderExuberant extends CardImpl<GustriderExuberant> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public GustriderExuberant(UUID ownerId) {

View file

@ -40,6 +40,7 @@ import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -51,8 +52,7 @@ public class Mosstodon extends CardImpl<Mosstodon> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public Mosstodon(UUID ownerId) {

View file

@ -40,6 +40,7 @@ import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -51,8 +52,7 @@ public class RakeclawGargantuan extends CardImpl<RakeclawGargantuan> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public RakeclawGargantuan(UUID ownerId) {

View file

@ -40,6 +40,7 @@ import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl;
import mage.filter.Filter.ComparisonType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -51,8 +52,7 @@ public class SpearbreakerBehemoth extends CardImpl<SpearbreakerBehemoth> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 5 or greater");
static {
filter.setPower(4);
filter.setPowerComparison(ComparisonType.GreaterThan);
filter.add(new PowerPredicate(ComparisonType.GreaterThan, 4));
}
public SpearbreakerBehemoth(UUID ownerId) {

View file

@ -41,6 +41,7 @@ import mage.abilities.keyword.UnblockableAbility;
import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -52,8 +53,7 @@ public class CraftyPathmage extends CardImpl<CraftyPathmage> {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 2 or less");
static {
filter.setPower(3);
filter.setPowerComparison(Filter.ComparisonType.LessThan);
filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3));
}
public CraftyPathmage(UUID ownerId) {

View file

@ -40,6 +40,8 @@ import mage.abilities.mana.GreenManaAbility;
import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.ToughnessPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -47,13 +49,11 @@ import mage.target.common.TargetCreaturePermanent;
* @author Loki
*/
public class Pendelhaven extends CardImpl<Pendelhaven> {
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("1/1 creature");
static {
filter.setPower(1);
filter.setPowerComparison(Filter.ComparisonType.Equal);
filter.setToughness(1);
filter.setToughnessComparison(Filter.ComparisonType.Equal);
filter.add(new PowerPredicate(Filter.ComparisonType.Equal, 1));
filter.add(new ToughnessPredicate(Filter.ComparisonType.Equal, 1));
}
public Pendelhaven(UUID ownerId) {

View file

@ -39,6 +39,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.filter.Filter;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@ -50,8 +51,7 @@ public class IntrepidHero extends CardImpl<IntrepidHero> {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power 4 or greater");
static {
filter.setPower(3);
filter.setPowerComparison(Filter.ComparisonType.GreaterThan);
filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 3));
}
public IntrepidHero(UUID ownerId) {

View file

@ -61,24 +61,6 @@ public abstract class FilterImpl<E, T extends FilterImpl<E, T>> implements Filte
this.predicates = new LinkedList<Predicate>(filter.predicates);
}
protected boolean compareInts(int int1, int int2, ComparisonType type) {
switch (type) {
case Equal:
if (int1 != int2)
return false;
break;
case GreaterThan:
if (int1 <= int2)
return false;
break;
case LessThan:
if (int1 >= int2)
return false;
break;
}
return true;
}
@Override
public boolean match(E e, Game game) {
for (int i = 0; i < predicates.size(); i++) {

View file

@ -64,10 +64,6 @@ public class FilterObject<E extends MageObject, T extends FilterObject<E, T>> ex
protected List<String> supertype = new ArrayList<String>();
protected ComparisonScope scopeSupertype = ComparisonScope.Any;
protected boolean notSupertype;
protected int power;
protected ComparisonType powerComparison;
protected int toughness;
protected ComparisonType toughnessComparison;
/**
* Indicates that filter shouldn't match the source.
@ -105,10 +101,6 @@ public class FilterObject<E extends MageObject, T extends FilterObject<E, T>> ex
this.supertype.addAll(filter.supertype);
this.scopeSupertype = filter.scopeSupertype;
this.notSupertype = filter.notSupertype;
this.power = filter.power;
this.powerComparison = filter.powerComparison;
this.toughness = filter.toughness;
this.toughnessComparison = filter.toughnessComparison;
this.another = filter.another;
}
@ -175,16 +167,6 @@ public class FilterObject<E extends MageObject, T extends FilterObject<E, T>> ex
return notFilter;
}
if (powerComparison != null) {
if (!compareInts(object.getPower().getValue(), power, powerComparison))
return notFilter;
}
if (toughnessComparison != null) {
if (!compareInts(object.getToughness().getValue(), toughness, toughnessComparison))
return notFilter;
}
return !notFilter;
}
@ -252,22 +234,6 @@ public class FilterObject<E extends MageObject, T extends FilterObject<E, T>> ex
this.notSupertype = notSupertype;
}
public void setPower(int power) {
this.power = power;
}
public void setPowerComparison(ComparisonType powerComparison) {
this.powerComparison = powerComparison;
}
public void setToughness(int toughness) {
this.toughness = toughness;
}
public void setToughnessComparison(ComparisonType toughnessComparison) {
this.toughnessComparison = toughnessComparison;
}
public void setUseColor(boolean useColor) {
this.useColor = useColor;
}