package tc.oc.pgm.filters.matcher.player; import com.google.common.base.Preconditions; import tc.oc.commons.core.util.Optionals; import tc.oc.pgm.classes.ClassMatchModule; import tc.oc.pgm.classes.PlayerClass; import tc.oc.pgm.filters.matcher.TypedFilter; import tc.oc.pgm.filters.query.IPlayerQuery; public class PlayerClassFilter extends TypedFilter.Impl<IPlayerQuery> { private final @Inspect PlayerClass playerClass; public PlayerClassFilter(PlayerClass playerClass) { this.playerClass = Preconditions.checkNotNull(playerClass, "player class"); } @Override public boolean matches(IPlayerQuery query) { return Optionals.flatMapBoth(query.module(ClassMatchModule.class), query.onlinePlayer(), (cmm, player) -> cmm.lastPlayedClass(player.getPlayerId())) .filter(playerClass::equals) .isPresent(); } }