コード例 #1
0
        /// <summary>
        /// Returns the types of the given Pokemon in past version groups, if any.
        /// </summary>
        private async Task <List <WithId <Type[]> > > GetTypes(Pokemon pokemon)
        {
            var typesList = new List <WithId <Type[]> >();

            if (pokemon.PastTypes.Any())
            {
                // determine which version groups need entries
                var versionGroups = await VersionGroupService.GetAll();

                var generationNames       = pokemon.PastTypes.Select(pt => pt.Generation.Name);
                var relevantVersionGroups = versionGroups.Where(vg => generationNames.Contains(vg.Generation.Name));

                // ensure we create an entry for only the last version group in the generation
                var necessaryVersionGroups = relevantVersionGroups.OrderBy(vg => vg.Id)
                                             .GroupBy(vg => vg.Generation.Name)
                                             .Select(gr => gr.Last());

                foreach (var vg in necessaryVersionGroups)
                {
                    var types       = pokemon.PastTypes.Single(t => t.Generation.Name == vg.Generation.Name);
                    var typeEntries = await MinimiseTypes(types.Types);

                    typesList.Add(new WithId <Type[]>(vg.VersionGroupId, typeEntries.ToArray()));
                }
            }

            // always include the newest types
            var newestId = await VersionGroupService.GetNewestVersionGroupId();

            var newestTypeEntries = await MinimiseTypes(pokemon.Types);

            typesList.Add(new WithId <Type[]>(newestId, newestTypeEntries.ToArray()));

            return(typesList);
        }
コード例 #2
0
        /// <summary>
        /// Returns the given Pokemon form's types.
        /// </summary>
        private async Task <IEnumerable <WithId <Type[]> > > GetTypes(PokemonForm form)
        {
            var typesList = new List <WithId <Type[]> >();

            // always include the newest types
            var newestId = await VersionGroupService.GetNewestVersionGroupId();

            var newestTypeEntries = await MinimiseTypes(form.Types);

            typesList.Add(new WithId <Type[]>(newestId, newestTypeEntries.ToArray()));

            return(typesList);
        }
コード例 #3
0
        /// <summary>
        /// Returns this type's damage relations in the version group with the given ID.
        /// </summary>
        private async Task <TypeRelations> GetDamageRelations(Type type, int versionGroupId)
        {
            if (versionGroupId == await VersionGroupsService.GetNewestVersionGroupId())
            {
                return(type.DamageRelations);
            }

            var versionGroup = await VersionGroupsService.Upsert(versionGroupId);

            var pastDamageRelations = await GetPastDamageRelations(type, versionGroup.Generation);

            return(pastDamageRelations ?? type.DamageRelations);
        }