Пример #1
0
        void LoadPokemonList()
        {
            GenerationClass     gen  = GenerationClass.Instance;
            Dex                 dex  = Dex.Instance;
            PokemonClassManager pkcm = PokemonClassManager.Instance;

            pokemonList = new ObservableCollection <Pokemon>();
            int pokeLimit;

            if (DexActive)
            {
                pokeLimit = gen.GenerationLimit[dex.Generation];
            }
            else
            {
                pokeLimit = gen.GenerationLimit[gen.GenerationLimit.Length - 1];
            }

            int last = 0;

            foreach (Pokemon p in pkcm.PokemonList)
            {
                if (p.Number != last && p.Number <= pokeLimit)
                {
                    pokemonList.Add(p);
                    last = p.Number;
                }
            }
            PokemonList = pokemonList;
        }
        /// <summary>
        /// Metodo che crea la lista di Pokémon a partire da una lista di stringhe
        /// </summary>
        /// <param name="lines">Lista di stringhe contenente i Pokémon</param>
        public void GetPokemonList(List <string> lines)
        {
            pokemonList = new ObservableCollection <Pokemon>();
            GenerationClass gen = GenerationClass.Instance;

            while (lines.Count > 0)
            {
                try
                {
                    Pokemon p = new Pokemon(lines[0]);
                    if (p.Number > gen.GenerationLimit[gen.ActualGeneration])
                    {
                        break;
                    }
                    pokemonList.Add(p);
                }
                catch (ProgramException) { }
                lines.RemoveAt(0);
            }
        }
        /// <summary>
        /// Ottieni le evoluzioni del Pokémon selezionato
        /// </summary>
        /// <param name="index">Numero del Pokémon</param>
        /// <returns>Lista di evoluzioni</returns>
        public List <Evolution> GetEvos(int index)
        {
            List <Evolution> evos = new List <Evolution>();
            Evolution        pre  = new Evolution();

            foreach (Evolution e in listaEvo)
            {
                if (e.Higher == index)
                {
                    pre = e;
                    break;
                }
            }

            if (pre.Lower != 0) // esiste una preevoluzione
            {
                foreach (Evolution e in listaEvo)
                {
                    if (e.Higher == pre.Lower) // se index è il terzo stadio
                    {
                        evos.Add(e);
                        break;
                    }
                }
                evos.Add(pre);
            }

            bool hasPostEvo = false;

            foreach (Evolution e in listaEvo)
            {
                if (e.Lower == index)
                {
                    evos.Add(e);
                    hasPostEvo = true;
                }
            }

            if (hasPostEvo)
            {
                for (int i = 0; i < evos.Count; i++)
                {
                    if (evos[i].Lower == index)
                    {
                        foreach (Evolution e in listaEvo)
                        {
                            if (e.Lower == evos[i].Higher)
                            {
                                evos.Add(e);
                            }
                        }
                    }
                }
            }
            GenerationClass gen = GenerationClass.Instance;

            for (int i = evos.Count - 1; i >= 0; i--)
            {//Se è una evoluzione futura rimuovila
                if (evos[i].Lower > gen.GenerationLimit[gen.ActualGeneration] ||
                    evos[i].Higher > gen.GenerationLimit[gen.ActualGeneration])
                {
                    evos.RemoveAt(i);
                }
            }
            return(evos);
        }