From 13d76bfc067a02c08727fc8d5e1075bc72cc6b73 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 6 Jan 2020 19:53:29 -0500 Subject: [PATCH] refactored PlayerPredicate --- .../src/mage/cards/b/BlessedAlliance.java | 3 +- .../src/mage/cards/c/CollectiveBrutality.java | 5 +- Mage.Sets/src/mage/cards/e/Endure.java | 3 +- .../src/mage/cards/f/FireAndBrimstone.java | 33 +++++------ .../src/mage/cards/s/SavageAlliance.java | 3 +- Mage.Sets/src/mage/cards/w/WheelAndDeal.java | 3 +- .../costs/common/GainLifeOpponentCost.java | 3 +- .../mage/abilities/keyword/AssistAbility.java | 3 +- .../main/java/mage/filter/FilterOpponent.java | 3 +- .../main/java/mage/filter/StaticFilters.java | 3 +- .../predicate/other/PlayerPredicate.java | 57 ------------------- 11 files changed, 23 insertions(+), 96 deletions(-) delete mode 100644 Mage/src/main/java/mage/filter/predicate/other/PlayerPredicate.java diff --git a/Mage.Sets/src/mage/cards/b/BlessedAlliance.java b/Mage.Sets/src/mage/cards/b/BlessedAlliance.java index e2db331f7e5..7c7296dc8e8 100644 --- a/Mage.Sets/src/mage/cards/b/BlessedAlliance.java +++ b/Mage.Sets/src/mage/cards/b/BlessedAlliance.java @@ -14,7 +14,6 @@ import mage.constants.TargetController; import mage.filter.FilterPlayer; import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.PlayerPredicate; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -30,7 +29,7 @@ public final class BlessedAlliance extends CardImpl { private static final FilterPlayer filterGainLife = new FilterPlayer("player to gain life"); static { - filterSacrifice.add(new PlayerPredicate(TargetController.OPPONENT)); + filterSacrifice.add(TargetController.OPPONENT.getPlayerPredicate()); } public BlessedAlliance(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java b/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java index a89585c75c3..9d60e693abc 100644 --- a/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java +++ b/Mage.Sets/src/mage/cards/c/CollectiveBrutality.java @@ -18,7 +18,6 @@ import mage.filter.FilterCard; import mage.filter.FilterPlayer; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; -import mage.filter.predicate.other.PlayerPredicate; import mage.target.TargetPlayer; import mage.target.common.TargetCreaturePermanent; @@ -37,8 +36,8 @@ public final class CollectiveBrutality extends CardImpl { static { filter.add(Predicates.or(CardType.INSTANT.getPredicate(), CardType.SORCERY.getPredicate())); - filterDiscard.add(new PlayerPredicate(TargetController.OPPONENT)); - filterLoseLife.add(new PlayerPredicate(TargetController.OPPONENT)); + filterDiscard.add(TargetController.OPPONENT.getPlayerPredicate()); + filterLoseLife.add(TargetController.OPPONENT.getPlayerPredicate()); } public CollectiveBrutality(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/Endure.java b/Mage.Sets/src/mage/cards/e/Endure.java index 80c3866cb41..2ef0a87d1fa 100644 --- a/Mage.Sets/src/mage/cards/e/Endure.java +++ b/Mage.Sets/src/mage/cards/e/Endure.java @@ -9,7 +9,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePlayerOrPlaneswalker; -import mage.filter.predicate.other.PlayerPredicate; import mage.filter.predicate.permanent.ControllerPredicate; /** @@ -22,7 +21,7 @@ public final class Endure extends CardImpl { static { filter.getCreatureFilter().add(new ControllerPredicate(TargetController.YOU)); - filter.getPlayerFilter().add(new PlayerPredicate(TargetController.YOU)); + filter.getPlayerFilter().add(TargetController.YOU.getPlayerPredicate()); } public Endure(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java index 92e9f2cf2a1..6dc7fe7f3d7 100644 --- a/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java +++ b/Mage.Sets/src/mage/cards/f/FireAndBrimstone.java @@ -1,7 +1,5 @@ - package mage.cards.f; -import java.util.UUID; import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; @@ -9,26 +7,27 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterPlayer; import mage.filter.predicate.ObjectSourcePlayer; -import mage.filter.predicate.other.PlayerPredicate; +import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; import mage.watchers.common.AttackedThisTurnWatcher; +import java.util.UUID; + /** - * * @author L_J */ public final class FireAndBrimstone extends CardImpl { - private static final FilterPlayer filter = new FilterPlayer("player who attacked this turn"); + private static final FilterPlayer filter = new FilterPlayer("player who attacked this turn"); - static { - filter.add(new FireAndBrimstonePredicate()); + static { + filter.add(FireAndBrimstonePredicate.instance); } public FireAndBrimstone(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}{W}"); // Fire and Brimstone deals 4 damage to target player who attacked this turn and 4 damage to you. this.getSpellAbility().addEffect(new DamageTargetEffect(4)); @@ -36,7 +35,7 @@ public final class FireAndBrimstone extends CardImpl { this.getSpellAbility().addTarget(new TargetPlayer(1, 1, false, filter)); } - public FireAndBrimstone(final FireAndBrimstone card) { + private FireAndBrimstone(final FireAndBrimstone card) { super(card); } @@ -46,11 +45,8 @@ public final class FireAndBrimstone extends CardImpl { } } -class FireAndBrimstonePredicate extends PlayerPredicate { - - public FireAndBrimstonePredicate() { - super(null); - } +enum FireAndBrimstonePredicate implements ObjectSourcePlayerPredicate> { + instance; @Override public boolean apply(ObjectSourcePlayer input, Game game) { @@ -60,11 +56,8 @@ class FireAndBrimstonePredicate extends PlayerPredicate { return false; } AttackedThisTurnWatcher watcher = game.getState().getWatcher(AttackedThisTurnWatcher.class); - if (watcher != null) { - if (!watcher.getAttackedThisTurnCreatures().isEmpty()) { - return player.getId().equals(game.getActivePlayerId()); - } - } - return false; + return watcher != null + && !watcher.getAttackedThisTurnCreatures().isEmpty() + && player.getId().equals(game.getActivePlayerId()); } } diff --git a/Mage.Sets/src/mage/cards/s/SavageAlliance.java b/Mage.Sets/src/mage/cards/s/SavageAlliance.java index 3566b203624..74215c38f72 100644 --- a/Mage.Sets/src/mage/cards/s/SavageAlliance.java +++ b/Mage.Sets/src/mage/cards/s/SavageAlliance.java @@ -18,7 +18,6 @@ import mage.constants.Outcome; import mage.constants.TargetController; import mage.filter.FilterPlayer; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.other.PlayerPredicate; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -39,7 +38,7 @@ public final class SavageAlliance extends CardImpl { private static final FilterPlayer filterOpponent = new FilterPlayer(); static { - filterOpponent.add(new PlayerPredicate(TargetController.OPPONENT)); + filterOpponent.add(TargetController.OPPONENT.getPlayerPredicate()); } public SavageAlliance(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WheelAndDeal.java b/Mage.Sets/src/mage/cards/w/WheelAndDeal.java index e57573e4be3..7b944d568d9 100644 --- a/Mage.Sets/src/mage/cards/w/WheelAndDeal.java +++ b/Mage.Sets/src/mage/cards/w/WheelAndDeal.java @@ -11,7 +11,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.FilterPlayer; -import mage.filter.predicate.other.PlayerPredicate; import mage.target.TargetPlayer; /** @@ -23,7 +22,7 @@ public final class WheelAndDeal extends CardImpl { private static final FilterPlayer filter = new FilterPlayer("opponent"); static { - filter.add(new PlayerPredicate(TargetController.OPPONENT)); + filter.add(TargetController.OPPONENT.getPlayerPredicate()); } public WheelAndDeal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage/src/main/java/mage/abilities/costs/common/GainLifeOpponentCost.java b/Mage/src/main/java/mage/abilities/costs/common/GainLifeOpponentCost.java index 2ff1e0a962f..b91407c6463 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/GainLifeOpponentCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/GainLifeOpponentCost.java @@ -14,7 +14,6 @@ import mage.constants.Outcome; import mage.constants.TargetController; import mage.filter.FilterPlayer; import mage.filter.predicate.other.PlayerCanGainLifePredicate; -import mage.filter.predicate.other.PlayerPredicate; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; @@ -28,7 +27,7 @@ public class GainLifeOpponentCost extends CostImpl { private static final FilterPlayer filter = new FilterPlayer("opponent that can gain life"); static { - filter.add(new PlayerPredicate(TargetController.OPPONENT)); + filter.add(TargetController.OPPONENT.getPlayerPredicate()); filter.add(new PlayerCanGainLifePredicate()); // you can't pay the costs by letting a player gain life that can't get life by rule changing effect } diff --git a/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java b/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java index af1a6b7af1e..7da5d3a4476 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AssistAbility.java @@ -10,7 +10,6 @@ import mage.abilities.costs.mana.ManaCost; import mage.abilities.effects.OneShotEffect; import mage.constants.*; import mage.filter.FilterPlayer; -import mage.filter.predicate.other.PlayerPredicate; import mage.game.Game; import mage.players.ManaPool; import mage.players.Player; @@ -26,7 +25,7 @@ public class AssistAbility extends SimpleStaticAbility implements AlternateManaP private static final FilterPlayer filter = new FilterPlayer("another player"); static { - filter.add(new PlayerPredicate(TargetController.NOT_YOU)); + filter.add(TargetController.NOT_YOU.getPlayerPredicate()); } public AssistAbility() { diff --git a/Mage/src/main/java/mage/filter/FilterOpponent.java b/Mage/src/main/java/mage/filter/FilterOpponent.java index 92199ffc54d..5bce6d08d01 100644 --- a/Mage/src/main/java/mage/filter/FilterOpponent.java +++ b/Mage/src/main/java/mage/filter/FilterOpponent.java @@ -2,7 +2,6 @@ package mage.filter; import mage.constants.TargetController; -import mage.filter.predicate.other.PlayerPredicate; /** * @@ -16,7 +15,7 @@ public class FilterOpponent extends FilterPlayer { public FilterOpponent(String text) { super(text); - add(new PlayerPredicate(TargetController.OPPONENT)); + add(TargetController.OPPONENT.getPlayerPredicate()); } public FilterOpponent(final FilterOpponent filter) { diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index b34a1a9f6c9..870bc0f6c36 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -12,7 +12,6 @@ import mage.constants.TargetController; import mage.filter.common.*; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.MulticoloredPredicate; -import mage.filter.predicate.other.PlayerPredicate; import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -633,7 +632,7 @@ public final class StaticFilters { public static final FilterPlayer FILTER_PLAYER_CONTROLLER = new FilterPlayer("you"); static { - FILTER_PLAYER_CONTROLLER.add(new PlayerPredicate(TargetController.YOU)); + FILTER_PLAYER_CONTROLLER.add(TargetController.YOU.getPlayerPredicate()); FILTER_PLAYER_CONTROLLER.setLockedFilter(true); } } diff --git a/Mage/src/main/java/mage/filter/predicate/other/PlayerPredicate.java b/Mage/src/main/java/mage/filter/predicate/other/PlayerPredicate.java deleted file mode 100644 index 5a365687e76..00000000000 --- a/Mage/src/main/java/mage/filter/predicate/other/PlayerPredicate.java +++ /dev/null @@ -1,57 +0,0 @@ - -package mage.filter.predicate.other; - -import java.util.UUID; -import mage.constants.TargetController; -import mage.filter.predicate.ObjectSourcePlayer; -import mage.filter.predicate.ObjectSourcePlayerPredicate; -import mage.game.Game; -import mage.players.Player; - -/** - * - * @author North - */ -public class PlayerPredicate implements ObjectSourcePlayerPredicate> { - - private final TargetController targetPlayer; - - public PlayerPredicate(TargetController player) { - this.targetPlayer = player; - } - - @Override - public boolean apply(ObjectSourcePlayer input, Game game) { - Player player = input.getObject(); - UUID playerId = input.getPlayerId(); - if (player == null || playerId == null) { - return false; - } - - switch (targetPlayer) { - case YOU: - if (player.getId().equals(playerId)) { - return true; - } - break; - case OPPONENT: - if (!player.getId().equals(playerId) && - game.getPlayer(playerId).hasOpponent(player.getId(), game)) { - return true; - } - break; - case NOT_YOU: - if (!player.getId().equals(playerId)) { - return true; - } - break; - } - - return false; - } - - @Override - public String toString() { - return "Player(" + targetPlayer + ')'; - } -}