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); } }