devxoul
2/9/2017 - 2:48 PM

IV filter for seoulpokemap.com

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