Пример #1
0
        public static PokedexEntry[] GetRegionalAtoZ()
        {
            var entries = GetMany(PokedexEntryData.GetAll());

            // all seen/caught
            var seen = Controller.ActivePlayer.PokedexSeen.Concat(Controller.ActivePlayer.PokedexCaught);

            // get all seen/caught entries
            var nationalEntries = entries.Where(e => seen.Contains(e.Id));

            // return entries ordered by name
            return(nationalEntries.OrderBy(e => e.Name).ToArray());
        }
Пример #2
0
        public static PokedexEntry[] GetNational()
        {
            var entries = GetMany(PokedexEntryData.GetAll());

            // all seen/caught
            var seen = Controller.ActivePlayer.PokedexSeen.Concat(Controller.ActivePlayer.PokedexCaught);

            // determine id range (001 - last seen/caught)
            var nationalEntries = entries.Where(e => seen.Contains(e.Id));
            var lastId          = nationalEntries.Max(e => e.Id);

            // return all entries below (including) the last id
            return(entries.Where(e => e.Id <= lastId).ToArray());
        }
Пример #3
0
        public static PokedexEntry[] GetTypeFiltered(PokemonType type1, PokemonType type2, PokedexListMode listMode)
        {
            var entries = GetMany(PokedexEntryData.GetAll());

            // get all caught
            var caught        = Controller.ActivePlayer.PokedexCaught;
            var caughtEntries = entries.Where(e => caught.Contains(e.Id));

            // filter by input type(s)
            var filtered = caughtEntries.Where(e =>
            {
                var data = PokemonData.Get(e.Id);
                if (type2 == PokemonType.None) // only filter by first input type
                {
                    return(type1 == DataHelper.ParseEnum <PokemonType>(data.type1) ||
                           type1 == DataHelper.ParseEnum <PokemonType>(data.type2));
                }
                else // filter by both input types
                {
                    var ptype1 = DataHelper.ParseEnum <PokemonType>(data.type1);
                    var ptype2 = DataHelper.ParseEnum <PokemonType>(data.type2);
                    return((type1 == ptype1 ||
                            type1 == ptype2) &&
                           (type2 == ptype1 ||
                            type2 == ptype2));
                }
            });

            switch (listMode)
            {
            case PokedexListMode.National:
                // order by national id
                return(filtered.OrderBy(e => e.Id).ToArray());

            case PokedexListMode.Regional:
                // order by regional id
                return(filtered.OrderBy(e => e.NewId).ToArray());

            case PokedexListMode.AtoZ:
                // order by name a-z
                return(filtered.OrderBy(e => e.Name).ToArray());
            }

            throw new InvalidOperationException("Invalid list mode provided to filter.");
        }
Пример #4
0
        public static PokedexEntry[] GetRegional()
        {
            var entries = GetMany(PokedexEntryData.GetAll());

            // all seen/caught
            var seen = Controller.ActivePlayer.PokedexSeen.Concat(Controller.ActivePlayer.PokedexCaught);

            // determine id range
            var nationalEntries = entries.Where(e => seen.Contains(e.Id));
            var firstNewId      = nationalEntries.Min(e => e.NewId);
            var lastNewId       = nationalEntries.Max(e => e.NewId);

            // get all regional entries within that range (including not seen)
            var regionlEntries = entries.Where(e =>
            {
                return(e.NewId >= firstNewId && e.NewId <= lastNewId);
            });

            // return regional entries ordered by regional id
            return(regionlEntries.OrderBy(e => e.NewId).ToArray());
        }
Пример #5
0
 private PokedexEntry(PokedexEntryData data)
 {
     _data = data;
 }