package magic.model.target;
import magic.model.MagicPlayer;
import magic.model.MagicSource;
// reference can not be used because game is copied.
public class MagicOtherTargetFilter extends MagicTargetFilterImpl {
private final MagicTargetFilter<MagicTarget> targetFilter;
private final long id;
public MagicOtherTargetFilter(final MagicTargetFilter<MagicTarget> aTargetFilter) {
targetFilter = aTargetFilter;
id = 0;
}
public MagicOtherTargetFilter(final MagicTargetFilter<MagicTarget> aTargetFilter, final MagicTarget invalid) {
targetFilter = aTargetFilter;
id = invalid.getId();
}
@Override
public boolean accept(final MagicSource source,final MagicPlayer player,final MagicTarget 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);
}
}