package magic.model.target; import magic.model.MagicSource; import magic.model.MagicPermanent; import magic.model.MagicPlayer; // Permanent reference can not be used because game is copied. public class MagicOtherPermanentTargetFilter extends MagicPermanentFilterImpl { private final MagicTargetFilter<MagicPermanent> targetFilter; private final long id; public MagicOtherPermanentTargetFilter(final MagicTargetFilter<MagicPermanent> aTargetFilter) { targetFilter = aTargetFilter; id = 0; } public MagicOtherPermanentTargetFilter(final MagicTargetFilter<MagicPermanent> aTargetFilter,final MagicPermanent invalidPermanent) { targetFilter = aTargetFilter; id = invalidPermanent.getId(); } @Override public boolean accept(final MagicSource source,final MagicPlayer player,final MagicPermanent target) { return targetFilter.accept(source,player,target) && ((id != 0 && id != target.getId()) || (id == 0 && source != target)); } @Override public boolean acceptType(final MagicTargetType targetType) { return targetFilter.acceptType(targetType); } }