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