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
         });
     }
 }
Example #2
0
 /// <summary>
 ///
 /// </summary>
 public override void ResetState()
 {
     CatchablePokemon.Clear();
     NearbyPokemon.Clear();
     NearbyPokestops.Clear();
     // @robertmclaws: Should we re-initialize the Geolocator here?
 }
Example #3
0
        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();
            }
        }
Example #4
0
        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();
            }
        }
Example #5
0
        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;
        }
Example #6
0
        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;
        }
Example #7
0
        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);
        }
Example #8
0
 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.");
     }
 }
Example #9
0
        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 NearbyPokemonWrapper(NearbyPokemon nearbyPokemon, Uri sprite)
 {
     _nearbyPokemon = nearbyPokemon;
     PokemonSprite  = sprite;
 }
Example #12
0
 public NearbyPokemonMessage(NearbyPokemon nearbyPokemon, InstanceConfiguration configuration) : base(configuration)
 {
     this.nearbyPokemon = nearbyPokemon;
 }