package tc.oc.pgm.filters.matcher.player;
import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
import tc.oc.pgm.playerstats.StatsUserFacet;
import tc.oc.pgm.match.MatchPlayer;
import tc.oc.pgm.filters.query.IPlayerQuery;
public class KillStreakFilter extends SpawnedPlayerFilter {
private final @Inspect Range<Integer> range;
private final @Inspect boolean repeat;
private final @Inspect boolean persistent;
public KillStreakFilter(Range<Integer> range, boolean repeat, boolean persistent) {
this.range = range;
this.repeat = repeat;
this.persistent = persistent;
}
@Override
public boolean isDynamic() {
return true;
}
@Override
protected boolean matches(IPlayerQuery query, MatchPlayer player) {
final StatsUserFacet facet = player.getUserContext().facet(StatsUserFacet.class);
int kills = persistent ? facet.teamKills() : facet.lifeKills();
if(repeat && kills > 0) {
int modulo = this.range.upperEndpoint() - (this.range.upperBoundType() == BoundType.CLOSED ? 0 : 1);
kills = 1 + (kills - 1) % modulo;
}
return this.range.contains(kills);
}
}