package magic.model.target;
import magic.model.MagicGame;
import magic.model.MagicPlayer;
import magic.model.MagicSource;
import magic.model.event.MagicEvent;
import java.util.ArrayList;
import java.util.List;
public abstract class MagicPlayerFilterImpl implements MagicTargetFilter<MagicPlayer> {
public List<MagicPlayer> filter(final MagicSource source) {
return filter(source, source.getController(), MagicTargetHint.None);
}
public List<MagicPlayer> filter(final MagicPlayer player) {
return filter(MagicSource.NONE, player, MagicTargetHint.None);
}
public List<MagicPlayer> filter(final MagicEvent event) {
return filter(event.getSource(), event.getPlayer(), MagicTargetHint.None);
}
public List<MagicPlayer> filter(final MagicSource source, final MagicPlayer player, final MagicTargetHint targetHint) {
final MagicGame game = player.getGame();
final List<MagicPlayer> targets=new ArrayList<MagicPlayer>();
// Players
if (acceptType(MagicTargetType.Player)) {
for (final MagicPlayer targetPlayer : game.getPlayers()) {
if (accept(source,player,targetPlayer) &&
targetHint.accept(player,targetPlayer)) {
targets.add(targetPlayer);
}
}
}
return targets;
}
public boolean acceptType(final MagicTargetType targetType) {
return targetType==MagicTargetType.Player;
}
}