package magic.model.target; import magic.model.MagicSource; import magic.model.MagicPermanent; import magic.model.MagicPlayer; public class MagicPTTargetFilter extends MagicPermanentFilterImpl { private final MagicPermanentFilterImpl targetFilter; private final Operator pOp; private final int power; private final Operator tOp; private final int toughness; public MagicPTTargetFilter(final MagicPermanentFilterImpl aTargetFilter, final int power) { this(aTargetFilter, Operator.LESS_THAN_OR_EQUAL, power, Operator.ANY, 0); } public MagicPTTargetFilter(final MagicPermanentFilterImpl aTargetFilter, final Operator powerOp, final int power) { this(aTargetFilter, powerOp, power, Operator.ANY, 0); } public static MagicPTTargetFilter Toughness(final MagicPermanentFilterImpl aTargetFilter, final Operator toughnessOp, final int toughness) { return new MagicPTTargetFilter(aTargetFilter, Operator.ANY, 0, toughnessOp, toughness); } public MagicPTTargetFilter(final MagicPermanentFilterImpl aTargetFilter, final Operator aPowerOp, final int aPower, final Operator aToughnessOp, final int aToughness) { assert aTargetFilter != null; targetFilter = aTargetFilter; pOp = aPowerOp; power = aPower; tOp = aToughnessOp; toughness = aToughness; } @Override public boolean accept(final MagicSource source,final MagicPlayer player,final MagicPermanent target) { return targetFilter.accept(source,player,target) && pOp.cmp(target.getPower(), power) && tOp.cmp(target.getToughness(), toughness); } @Override public boolean acceptType(final MagicTargetType targetType) { return targetFilter.acceptType(targetType); } };