package magic.model.target;
import java.util.List;
import magic.model.MagicPlayer;
import magic.model.MagicSource;
import magic.model.event.MagicEvent;
public interface MagicTargetFilter<T extends MagicTarget> {
default boolean isStatic() {
return false;
}
boolean acceptType(final MagicTargetType targetType);
boolean accept(final MagicSource source,final MagicPlayer player,final T target);
default List<T> filter(final MagicSource source, final MagicPlayer player) {
return filter(source, player, MagicTargetHint.None);
}
List<T> filter(final MagicSource source, final MagicPlayer player, final MagicTargetHint targetHint);
List<T> filter(final MagicSource source);
List<T> filter(final MagicPlayer player);
List<T> filter(final MagicEvent event);
}