refactored OwnerPredicate

This commit is contained in:
Evan Kranzler 2020-01-06 19:59:56 -05:00
parent 3f0547a7fa
commit c14a079cc5
59 changed files with 66 additions and 183 deletions

View file

@ -8,7 +8,6 @@ import mage.constants.SetTargetPointer;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.other.OwnerPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
@ -40,7 +39,7 @@ public class PutCardIntoGraveFromAnywhereAllTriggeredAbility extends TriggeredAb
super(zone, effect, optional);
this.filter = filter.copy();
this.setTargetPointer = setTargetPointer;
this.filter.add(new OwnerPredicate(targetController));
this.filter.add(targetController.getOwnerPredicate());
StringBuilder sb = new StringBuilder("Whenever ");
sb.append(filter.getMessage());
sb.append(" is put into ");

View file

@ -14,7 +14,6 @@ import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.predicate.other.OwnerPredicate;
import mage.game.Game;
import mage.players.Player;
import mage.target.Target;
@ -43,7 +42,7 @@ public class ExileOpponentsCardFromExileToGraveyardCost extends CostImpl {
Player controller = game.getPlayer(controllerId);
if (controller != null) {
FilterCard filter = new FilterCard();
filter.add(new OwnerPredicate(TargetController.OPPONENT));
filter.add(TargetController.OPPONENT.getOwnerPredicate());
Target target = new TargetCardInExile(filter);
if (controller.chooseTarget(Outcome.Damage, target, ability, game)) {
Card card = game.getCard(target.getFirstTarget());

View file

@ -34,7 +34,7 @@ public enum TargetController {
private final DamagedPlayerThisTurnPredicate damagedPlayerThisTurnPredicate;
TargetController() {
this.ownerPredicate = new OwnerPredicate(this);
this.ownerPredicate = this.getOwnerPredicate();
this.playerPredicate = new PlayerPredicate(this);
this.controllerPredicate = new ControllerPredicate(this);
this.damagedPlayerThisTurnPredicate = new DamagedPlayerThisTurnPredicate(this);

View file

@ -4,7 +4,6 @@ package mage.filter.common;
import mage.constants.TargetController;
import mage.filter.FilterCard;
import mage.filter.predicate.other.OwnerPredicate;
/**
*
@ -18,7 +17,7 @@ public class FilterOwnedCard extends FilterCard {
public FilterOwnedCard(String name) {
super(name);
this.add(new OwnerPredicate(TargetController.YOU));
this.add(TargetController.YOU.getOwnerPredicate());
}
public FilterOwnedCard(final FilterOwnedCard filter) {

View file

@ -1,59 +0,0 @@
package mage.filter.predicate.other;
import java.util.UUID;
import mage.cards.Card;
import mage.constants.TargetController;
import mage.filter.predicate.ObjectPlayer;
import mage.filter.predicate.ObjectPlayerPredicate;
import mage.game.Game;
/**
*
* @author North
*/
public class OwnerPredicate implements ObjectPlayerPredicate<ObjectPlayer<Card>> {
private final TargetController targetOwner;
public OwnerPredicate(TargetController targetOwner) {
this.targetOwner = targetOwner;
}
@Override
public boolean apply(ObjectPlayer<Card> input, Game game) {
Card card = input.getObject();
UUID playerId = input.getPlayerId();
if (card == null || playerId == null) {
return false;
}
switch (targetOwner) {
case YOU:
if (card.isOwnedBy(playerId)) {
return true;
}
break;
case OPPONENT:
if (!card.isOwnedBy(playerId)
&& game.getPlayer(playerId).hasOpponent(card.getOwnerId(), game)) {
return true;
}
break;
case NOT_YOU:
if (!card.isOwnedBy(playerId)) {
return true;
}
break;
case ANY:
return true;
}
return false;
}
@Override
public String toString() {
return "Owner(" + targetOwner + ')';
}
}