/// <summary>
        /// Returns whether the given encounter is present in the given version group.
        /// </summary>
        private bool IsInVersionGroup(LocationAreaEncounter encounter, VersionGroupEntry versionGroup)
        {
            var versions          = versionGroup.Versions.Select(v => v.Name);
            var encounterVersions = encounter.VersionDetails.Select(vd => vd.Version.Name);

            return(versions.Intersect(encounterVersions).Any());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns true if the given Pokemon form can be obtained in the given version group.
        /// </summary>
        private async Task <bool> IsValid(PokemonForm pokemonForm, VersionGroupEntry versionGroup)
        {
            if (pokemonForm.IsMega)
            {
                // decide based on version group in which it was introduced
                var formVersionGroup = await VersionGroupService.Upsert(pokemonForm.VersionGroup);

                return(formVersionGroup.Order <= versionGroup.Order);
            }

            return(false);
        }
        /// <summary>
        /// Returns true if the given Pokemon species can be obtained in the given version group.
        /// </summary>
        private bool IsValid(PokemonSpecies pokemonSpecies, VersionGroupEntry versionGroup)
        {
            if (!versionGroup.Pokedexes.Any() || !pokemonSpecies.PokedexNumbers.Any())
            {
                // PokeAPI data is incomplete
                return(true);
            }

            var versionGroupPokedexes = versionGroup.Pokedexes.Select(p => p.Name);
            var pokemonPokedexes      = pokemonSpecies.PokedexNumbers.Select(pn => pn.Pokedex.Name);

            return(versionGroupPokedexes.Intersect(pokemonPokedexes).Any());
        }
Exemplo n.º 4
0
        /// <summary>
        /// Returns the given Pokemon's moves in the given version group.
        /// </summary>
        private async Task <IEnumerable <Move> > GetMoves(Pokemon pokemon, VersionGroupEntry versionGroup)
        {
            var allMoves      = pokemon.Moves;
            var relevantMoves = allMoves.Where(m =>
            {
                var versionGroupNames = m.VersionGroupDetails.Select(vgd => vgd.VersionGroup.Name);
                return(versionGroupNames.Contains(versionGroup.Name));
            });

            var moveEntries = await MoveService.UpsertMany(relevantMoves.Select(m => m.Move));

            return(moveEntries.Select(m => new Move
            {
                Id = m.MoveId,
                Name = m.Name
            }));
        }