public PokemonGoService()
        {
            var config = MainConfiguration.Load();

            pogoInstances = new List <PogoInstance>(config.Instances.Count);

            foreach (var instance in config.Instances)
            {
                instance.MainConfiguration = config;

                var walker        = new Walker(instance.WalkingPoints);
                var startPosition = walker.GetNextPosition();

                var session = Login.GetSession(instance.Username, instance.Password, instance.LoginProvider, startPosition.Latitude, startPosition.Longitude);

                var pogoInstance = new PogoInstance(instance, session, walker);
                pogoInstances.Add(pogoInstance);
            }
        }
Beispiel #2
0
        private async void Map_Update(Map map, PogoInstance instance)
        {
            var wildPokemons = map.Cells.SelectMany(c => c.WildPokemons).Select(p => new SpawnedPokemon(p, instance.Configuration.Name));

            foreach (var pokemon in wildPokemons)
            {
                instance.PokemonHandler.HandleSpawnedPokemon(pokemon);
            }

            var catchablePokemons = map.Cells.SelectMany(c => c.CatchablePokemons).Select(p => new SpawnedPokemon(p, instance.Configuration.Name));

            foreach (var pokemon in catchablePokemons)
            {
                instance.PokemonHandler.HandleSpawnedPokemon(pokemon);
            }

            if (instance.Configuration.ProcessNearbyPokemon)
            {
                instance.PokemonHandler.CleanNearbyPokemonList();

                var nearbyPokemons = map.Cells.SelectMany(c => c.NearbyPokemons).Select(p => new NearbyPokemon(p, instance.Configuration.Name, instance.Session.Player.Latitude, instance.Session.Player.Longitude)).ToList();
                foreach (var pokemon in nearbyPokemons)
                {
                    instance.PokemonHandler.HandleNearbyPokemon(pokemon);
                }
            }

            if (instance.Configuration.ProcessGyms)
            {
                var gyms = map.Cells.SelectMany(x => x.Forts).Where(x => x.Type == FortType.Gym).ToList();
                foreach (var gym in gyms)
                {
                    await instance.GymHandler.Handle(gym);
                }
            }

            var nextPosition = instance.Walker.GetNextPosition();

            instance.Session.Player.SetCoordinates(nextPosition.Latitude, nextPosition.Longitude);
        }