public GameMapPageViewModel() { if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { var poke1 = new NearbyPokemon() { PokemonId = PokemonId.Abra, DistanceInMeters = 10, }; var poke2 = new NearbyPokemon() { PokemonId = PokemonId.Arbok, DistanceInMeters = 11, }; var poke3 = new NearbyPokemon() { PokemonId = PokemonId.Blastoise, DistanceInMeters = 12, }; GameClient.NearbyPokemons.Add(new NearbyPokemonWrapper(poke1)); GameClient.NearbyPokemons.Add(new NearbyPokemonWrapper(poke2)); GameClient.NearbyPokemons.Add(new NearbyPokemonWrapper(poke3)); GameClient.PokedexInventory.Add(new PokedexEntry { PokemonId = poke1.PokemonId, TimesCaptured = 1 }); GameClient.PokedexInventory.Add(new PokedexEntry { PokemonId = poke2.PokemonId, TimesCaptured = 1 }); } }
/// <summary> /// /// </summary> public override void ResetState() { CatchablePokemon.Clear(); NearbyPokemon.Clear(); NearbyPokestops.Clear(); // @robertmclaws: Should we re-initialize the Geolocator here? }
public void HandleNearbyPokemon(NearbyPokemon nearbyPokemon) { string encounterId = nearbyPokemon.EncounterId.ToString(); if (!nearbyEncounters.Contains(encounterId) && !spawnedEncounters.Contains(encounterId)) { nearbyEncounters.Add(encounterId); var message = new NearbyPokemonMessage(nearbyPokemon, pogoInstance.Configuration); message.Send(); } }
public void HandleNearbyPokemon(NearbyPokemon nearbyPokemon) { if (!nearbyEncounters.ContainsKey(nearbyPokemon.EncounterID)) { nearbyEncounters.Add(nearbyPokemon.EncounterID, nearbyPokemon.Encountered); this.pogoInstance.Database.AddNearbyPokemon(nearbyPokemon); log.Info($"Pokemon, {nearbyPokemon.PokemonID.ToString()}, is nearby at long:{this.pogoInstance.Session.Player.Longitude}, lat:{this.pogoInstance.Session.Player.Latitude}"); var message = new NearbyPokemonMessage(nearbyPokemon, pogoInstance.Configuration); message.Send(); } }
public MapPokemonViewModel(NearbyPokemon item, FortData fort) { this.item = item; this.fort = fort; this.PokemonId = item.PokemonId; this.Latitude = fort.Latitude; this.Longitude = fort.Longitude; this.EncounterId = item.EncounterId; this.Distance = item.DistanceInMeters; this.FortId = item.FortId; }
public MapPokemonViewModel(NearbyPokemon item, FortData fort) { this.item = item; PokemonId = item.PokemonId; if (fort != null) { this.fort = fort; Latitude = fort.Latitude; Longitude = fort.Longitude; } EncounterId = item.EncounterId; Distance = item.DistanceInMeters; FortId = item.FortId; }
private void AddNearByPokemonMarker(NearbyPokemon item, FortData fort) { var existing = model.NearbyPokemons.FirstOrDefault(x => x.EncounterId == item.EncounterId); if (existing != null) { return; } var nearbyModel = new MapPokemonViewModel(item, fort); var marker = new GMapMarker(new PointLatLng(nearbyModel.Latitude, nearbyModel.Longitude)); marker.Shape = new MapPokemonMarker(null, marker, Session, nearbyModel); nearbyPokemonMarkers.Add(marker); gmap.Markers.Add(marker); this.model.NearbyPokemons.Add(nearbyModel); }
public void AddNearbyPokemon(NearbyPokemon nearbyPokemon) { try { lock (dbLock) { using (var context = new PogoDBContext()) { context.NearbyPokemons.Add(nearbyPokemon); context.SaveChanges(); } } } catch (Exception ex) { log.Error(ex, "Failed to add nearby pokemon to database."); } }
public async Task <MethodResult> SnipeAllNearyPokemon() { MethodResult <List <NearbyPokemon> > pokeSniperResult = RequestPokeSniperRares(); if (!pokeSniperResult.Success) { return(new MethodResult { Message = pokeSniperResult.Message }); } if (Tracker.PokemonCaught >= UserSettings.CatchPokemonDayLimit) { LogCaller(new LoggerEventArgs("Catch pokemon limit actived", LoggerTypes.Info)); return(new MethodResult { Message = "Limit actived" }); } List <NearbyPokemon> pokemonToSnipe = pokeSniperResult.Data.Where(x => x.EncounterId != _lastPokeSniperId && UserSettings.CatchSettings.FirstOrDefault(p => p.Id == x.PokemonId).Snipe&& x.DistanceInMeters < UserSettings.MaxTravelDistance && !LastedEncountersIds.Contains(x.EncounterId)).OrderBy(x => x.DistanceInMeters).ToList(); if (UserSettings.SnipeAllPokemonsNoInPokedex) { LogCaller(new LoggerEventArgs("Search pokemons no into pokedex ...", LoggerTypes.Info)); var ids = Pokedex.Select(x => x.PokemonId); pokemonToSnipe = pokeSniperResult.Data.Where(x => x.EncounterId != _lastPokeSniperId && !ids.Contains(x.PokemonId) && x.DistanceInMeters < UserSettings.MaxTravelDistance && !LastedEncountersIds.Contains(x.EncounterId)).OrderBy(x => x.DistanceInMeters).ToList(); if (pokemonToSnipe.Count > 0) { LogCaller(new LoggerEventArgs("Found pokemons no into pokedex, go to sniping ...", LoggerTypes.Snipe)); } } if (pokemonToSnipe.Count == 0) { LogCaller(new LoggerEventArgs("No pokemon to snipe within catch settings", LoggerTypes.Info)); return(new MethodResult { Message = "No catchable pokemon found" }); } LogCaller(new LoggerEventArgs(String.Format("Sniping {0} pokemon", pokemonToSnipe.Count), LoggerTypes.Snipe)); await Task.Delay(CalculateDelay(UserSettings.GeneralDelay, UserSettings.GeneralDelayRandom)); //Long running, so can't let this continue while (pokemonToSnipe.Any() && IsRunning && !AlreadySnipped) { AlreadySnipped = false; NearbyPokemon nearbyPokemon = pokemonToSnipe.First(); pokemonToSnipe.Remove(nearbyPokemon); var forts = _client.ClientSession.Map.Cells.SelectMany(x => x.Forts); var fortNearby = forts.Where(x => x.Id == nearbyPokemon.FortId).FirstOrDefault(); if (fortNearby == null) { continue; } _lastPokeSniperId = nearbyPokemon.EncounterId; GeoCoordinate coords = new GeoCoordinate { Latitude = fortNearby.Latitude, Longitude = fortNearby.Longitude }; await CaptureSnipePokemon(coords.Latitude, coords.Longitude, nearbyPokemon.PokemonId); await Task.Delay(CalculateDelay(UserSettings.GeneralDelay, UserSettings.GeneralDelayRandom)); pokemonToSnipe = pokemonToSnipe.Where(x => UserSettings.CatchSettings.FirstOrDefault(p => p.Id == x.PokemonId).Snipe&& fortNearby.CooldownCompleteTimestampMs >= DateTime.Now.AddSeconds(30).ToUnixTime() && !LastedEncountersIds.Contains(x.EncounterId)).OrderBy(x => x.DistanceInMeters).ToList(); if (UserSettings.SnipeAllPokemonsNoInPokedex) { LogCaller(new LoggerEventArgs("Search pokemons no into pokedex ...", LoggerTypes.Info)); var ids = Pokedex.Select(x => x.PokemonId); pokemonToSnipe = pokemonToSnipe.Where(x => x.EncounterId != _lastPokeSniperId && !ids.Contains(x.PokemonId)).OrderBy(x => x.DistanceInMeters).ToList(); if (pokemonToSnipe.Count > 0) { LogCaller(new LoggerEventArgs("Found pokemons no into pokedex, go to sniping ...", LoggerTypes.Snipe)); } } } AlreadySnipped = false; return(new MethodResult { Success = true }); }
public NearbyPokemonWrapper(NearbyPokemon nearbyPokemon, Uri sprite) { _nearbyPokemon = nearbyPokemon; PokemonSprite = sprite; }
public NearbyPokemonMessage(NearbyPokemon nearbyPokemon, InstanceConfiguration configuration) : base(configuration) { this.nearbyPokemon = nearbyPokemon; }