IV filter for seoulpokemap.com
function filteredPokemonsByIV(pokemons, iv) {
iv = iv || 0.9;
return pokemons.filter(function (pokemon) {
var currentIV = (pokemon.attack + pokemon.defence + pokemon.stamina) / 45;
return currentIV >= iv;
});
}
function arePokemonsEqual(lhs, rhs) {
if (lhs.length != rhs.length) {
return false;
}
for (var i = 0; i < lhs.length; i++) {
if (!lhs[i].isEqual(rhs[i])) {
return false;
}
}
return true;
}
function removeAllMarkers() {
markers.forEach(function (marker) {
marker.removeFrom(map);
});
markers = [];
}
function filterByIV(iv) {
var filteredPokemons = filteredPokemonsByIV(pokemons, iv);
if (arePokemonsEqual(filteredPokemons, pokemons)) {
return;
}
pokemons = [];
removeAllMarkers();
refreshPokemons();
refreshMarker();
var newPokemons = filteredPokemons.map(function (pokemon) {
pokemon['pokemon_id'] = pokemon.id;
pokemon['lat'] = pokemon.center.lat;
pokemon['lng'] = pokemon.center.lng;
return pokemon;
});
timeOffset = 0;
processNewPokemons(newPokemons);
}
var ivFilterIntervalId = null;
function turnOnIVFilter(iv) {
ivFilterIntervalId = setInterval(function() {
filterByIV(iv);
}, 100);
}
function turnOffIVFilter() {
clearInterval(ivFilterIntervalId);
}
// Usage
turnOnIVFilter(0.9);
// turnOffIVFilter();