コード例 #1
0
ファイル: Form1.cs プロジェクト: Jacques2/Pokemon-Planner
        public void GetPokemon(string json)
        {
            progressBar1.Value = 0;
            flowLayoutPanelPokemon.Controls.Clear();
            List <Tuple <string, string, string> > pokeInfo = new List <Tuple <string, string, string> >();//name, url of image, tag
            List <string> pokeAdded    = new List <string>();
            var           result       = JsonConvert.DeserializeObject <Pokemon_Location.RootObject>(json);
            int           noEncounters = result.pokemon_encounters.Count;

            progressBar1.Maximum = noEncounters;
            for (int poke = 0; poke < noEncounters; poke++)
            {
                if (!pokeAdded.Contains(result.pokemon_encounters.ElementAt(poke).pokemon.name))
                {
                    string pokeTag = result.pokemon_encounters.ElementAt(poke).pokemon.name;
                    pokeAdded.Add(pokeTag);
                    string pokeJson = ApiRequest(Convert.ToString(result.pokemon_encounters.ElementAt(poke).pokemon.url));
                    var    pokeData = JsonConvert.DeserializeObject <Pokemon_Details.RootObject>(pokeJson);
                    string imageUrl = pokeData.sprites.front_default;

                    string pokeName = "";
                    if (pokemonCache.ContainsKey(pokeTag))
                    {
                        pokeName = pokemonCache[pokeTag];
                    }
                    else
                    {
                        string pokeNameJson    = ApiRequest(pokeData.species.url);
                        var    pokeSpeciesData = JsonConvert.DeserializeObject <Pokemon_Species.RootObject>(pokeNameJson);
                        for (int language = 0; language < pokeSpeciesData.names.Count; language++)
                        {
                            if (pokeSpeciesData.names.ElementAt(language).language.name == "en")
                            {
                                pokeName = pokeSpeciesData.names.ElementAt(language).name;
                                pokemonCache.Add(pokeTag, pokeName);
                                language = pokeSpeciesData.names.Count;//end for loop
                            }
                        }
                    }
                    pokeInfo.Add(new Tuple <string, string, string>(pokeName, imageUrl, pokeTag));
                }
                progressBar1.Value = poke + 1;
            }
            for (int i = 0; i < pokeInfo.Count; i++)
            {
                PokemonPicture pp = new PokemonPicture();
                flowLayoutPanelPokemon.Controls.Add(pp);
                pp.SetName(pokeInfo.ElementAt(i).Item1);
                pp.SetPicture(pokeInfo.ElementAt(i).Item2);
                pp.SetTag(pokeInfo.ElementAt(i).Item3);
                pp.MouseClick             += new MouseEventHandler(PokemonPicture_Click);
                pp.Controls[0].MouseClick += new MouseEventHandler(PokemonPicture_Click);
                pp.Controls[1].MouseClick += new MouseEventHandler(PokemonPicture_Click);
                if (pokedexIndex.ContainsKey(pokeInfo.ElementAt(i).Item3))
                {
                    if (pokedex.Contains(Convert.ToString(pokedexIndex[pokeInfo.ElementAt(i).Item3])))
                    {
                        pp.Disable();
                    }
                }
            }
        }