// method to load PokemonList from the internet over API
        private async Task LoadFromApi()
        {
            // MAX limit currently: 807
            int maxPokemons = 807;

            NamedApiResourceList <Pokemon> allPokemons = await pokeClient.GetNamedResourcePageAsync <Pokemon>(maxPokemons, 0);

            for (int i = 1; i <= allPokemons.Results.Count; i++)
            {
                PokemonSpecies pokemonNameLang = await pokeClient.GetResourceAsync <PokemonSpecies>(i);

                for (int j = 0; j < pokemonNameLang.Names.Count; j++)
                {
                    if (pokemonNameLang.Names[j].Language.Name == Language)
                    {
                        PokeList.Add(new PokemonModel
                        {
                            Id = i,
                            PokeNameOriginal = allPokemons.Results[i - 1].Name,
                            PokeName         = pokemonNameLang.Names[j].Name,
                            PokeUrl          = allPokemons.Results[i - 1].Url
                        });
                        SearchPokeList.Add(new PokemonModel
                        {
                            Id = i,
                            PokeNameOriginal = allPokemons.Results[i - 1].Name,
                            PokeName         = pokemonNameLang.Names[j].Name,
                            PokeUrl          = allPokemons.Results[i - 1].Url
                        });
                    }
                }
                // Brings loading status to front-end in ProgressBar
                await _events.PublishOnUIThreadAsync(new LoadingBarEvent { LoadingCount = i }, CancellationToken.None);
            }
        }
        /// <inheritdoc />
        public void GetTeamBaseStats(PokeList list, int level)
        {
            var stats = _pokemonRepository.GetTeamBaseStats(list).ToList();

            for (var i = 0; i < list.Count; i++)
            {
                var s = stats.First(stat => stat.Id == list.Species[i]);

                // Set Name
                list.Names[i] = s.Identifier.ToUpper();

                // Set Stats
                list.Pokemon[i].Attack     = (byte)s.Attack;
                list.Pokemon[i].Defense    = (byte)s.Defense;
                list.Pokemon[i].Speed      = (byte)s.Speed;
                list.Pokemon[i].MaxHp      = (ushort)s.Hp;
                list.Pokemon[i].SpDefense  = (byte)s.SpDefense;
                list.Pokemon[i].SpAttack   = (byte)s.SpAttack;
                list.Pokemon[i].Level      = (byte)level;
                list.Pokemon[i].Experience = (uint)CalculateExperiencePoints(s.GrowthRate, level);

                // Set Others
                list.Pokemon[i].Name  = s.Identifier.ToUpper();
                list.Pokemon[i].Types = s.Types.Split(new char[] { ',' }).ToList();
            }
        }
Beispiel #3
0
        public void AssignIVsAndEVsToTeamTest()
        {
            // Setup
            int level = 50;

            // Mock
            probabilityUtilityMock.Setup(m => m.GaussianRandomSkewed(0, 65535, level / 100D)).Returns(1);
            probabilityUtilityMock.Setup(m => m.GaussianRandom(0, 15)).Returns(1);
            var list = Enumerable.Range(1, 6).Select(i => new Pokemon
            {
                SpeciesId = (byte)i,
                OTName    = i.ToString()
            });
            var team = new PokeList(list.Count())
            {
                Pokemon = list.ToArray(),
                Species = list.Select(p => p.SpeciesId).ToArray(),
                OTNames = list.Select(p => p.OTName).ToArray(),
            };

            // Generate
            pokemonStatUtility = new PokemonStatProvider(pokemonDAMock.Object, probabilityUtilityMock.Object);
            pokemonStatUtility.AssignIVsAndEVsToTeam(team, level);

            // Assert
            Assert.NotNull(team);
            foreach (var poke in team.Pokemon)
            {
                Assert.True(poke.DefenseEV >= 0, "DefenseEV >= 0");
                Assert.True(poke.DefenseEV <= 65535, "DefenseEV <= 65535");
                Assert.True(poke.AttackEV >= 0, "AttackEV >= 0");
                Assert.True(poke.AttackEV <= 65535, "AttackEV <= 65535");
                Assert.True(poke.HitPointsEV >= 0, "HitPointsEV >= 0");
                Assert.True(poke.HitPointsEV <= 65535, "HitPointsEV <= 65535");
                Assert.True(poke.SpecialEV >= 0, "SpecialEV >= 0");
                Assert.True(poke.SpecialEV <= 65535, "SpecialEV <= 65535");
                Assert.True(poke.SpeedEV >= 0, "SpeedEV >= 0");
                Assert.True(poke.SpeedEV <= 65535, "SpeedEV <= 65535");
            }
            foreach (var poke in team.Pokemon)
            {
                Assert.True(poke.DefenseIV >= 0, "DefenseIV >= 0");
                Assert.True(poke.DefenseIV <= 15, "DefenseIV <= 15");
                Assert.True(poke.AttackIV >= 0, "AttackIV >= 0");
                Assert.True(poke.AttackIV <= 15, "AttackIV <= 15");
                Assert.True(poke.SpecialIV >= 0, "SpecialIV >= 0");
                Assert.True(poke.SpecialIV <= 15, "SpecialIV <= 15");
                Assert.True(poke.SpeedIV >= 0, "SpeedIV >= 0");
                Assert.True(poke.SpeedIV <= 15, "SpeedIV <= 15");
            }

            // Verify
            pokemonDAMock.VerifyAll();
            probabilityUtilityMock.VerifyAll();
        }
        private async void LoadItems(string uri = "https://pokeapi.co/api/v2/pokemon/")
        {
            PokeBus = await DependencyService.Get <IPokemonService>().GetAllAsync(uri);

            CanButton();

            this.PokeList.Clear();
            foreach (Pokemon pk in PokeBus.Results)
            {
                PokeList.Add(pk);
            }
        }
 /// <inheritdoc />
 public void CalculateStatsForTeam(PokeList pokeList, int level)
 {
     foreach (var poke in pokeList.Pokemon)
     {
         poke.MaxHp     = (ushort)CalculateHitPoints(poke.MaxHp, 15D, poke.HitPointsEV, level);
         poke.CurrentHp = poke.MaxHp;
         poke.Attack    = (ushort)CalculateStat(poke.Attack, poke.AttackIV, poke.AttackEV, level);
         poke.Defense   = (ushort)CalculateStat(poke.Defense, poke.DefenseIV, poke.DefenseEV, level);
         poke.SpAttack  = (ushort)CalculateStat(poke.SpAttack, poke.SpecialIV, poke.SpecialEV, level);
         poke.SpDefense = (ushort)CalculateStat(poke.SpDefense, poke.SpecialIV, poke.SpecialEV, level);
         poke.Speed     = (ushort)CalculateStat(poke.Speed, poke.SpeedIV, poke.SpeedEV, level);
     }
 }
Beispiel #6
0
        /// <summary>
        /// Completely serialized a given <see cref="PokeList"/> into the file stream.
        /// </summary>
        private void SerializePokeList(bool full, int capacity, PokeList list)
        {
            _bwriter.Write(list.Count);

            // Species
            for (var i = 0; i < capacity + 1; i++)
            {
                _bwriter.Write(i < list.Count ? list.Pokemon[i].SpeciesId : (byte)0xff);
            }

            // Pokemon
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    SerializePokemon(!full, list.Pokemon[i]);
                }
                else
                {
                    _bwriter.Fill(0xff, (full ? 48 : 32)); // sizeof pokemon
                }
            }

            // OT Names
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    _bwriter.WriteString(list.Pokemon[i].OTName, 11, _charset);
                }
                else
                {
                    _bwriter.Fill(0xff, 11);
                }
            }

            // Names
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    _bwriter.WriteString(list.Pokemon[i].Name, 11, _charset);
                }
                else
                {
                    _bwriter.Fill(0xff, 11);
                }
            }
        }
        private void PokeBlockedList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            //PokeList.Items.Add(PokeBlockedList.SelectedItem.ToString());
            PokeGrid pokemon = PokeBlockedList.SelectedItem as PokeGrid;

            blockedlistItems.Remove(pokemon);
            PokeBlockedList.ClearValue(ItemsControl.ItemsSourceProperty);
            PokeBlockedList.ItemsSource = blockedlistItems;
            pokelistItems.Add(pokemon);
            PokeList.ClearValue(ItemsControl.ItemsSourceProperty);
            PokeList.ItemsSource = pokelistItems;
            pokesCount          += 1;
            PokesLeft.Text       = String.Format("Pokemon Left:\n {0}", pokesCount);
            savedFile            = false;
        }
Beispiel #8
0
        public void GetTeamBaseStatsTest()
        {
            // Mock
            var list = Enumerable.Range(1, 6).Select(i => new Pokemon
            {
                SpeciesId = (byte)i,
                OTName    = i.ToString(),
            });
            var team = new PokeList(list.Count())
            {
                Pokemon = list.ToArray(),
                Species = list.Select(p => p.SpeciesId).ToArray(),
                OTNames = list.Select(p => p.OTName).ToArray(),
            };

            pokemonDAMock.Setup(m => m.GetTeamBaseStats(team)).Returns <PokeList>(pl => pl.Species.Select(i => new BaseStats
            {
                Id         = i,
                Identifier = $"Test{i}",
                Types      = "test",
                Hp         = i,
                Attack     = i + 1,
                Defense    = i + 2,
                SpAttack   = i + 3,
                SpDefense  = i + 4,
                Speed      = i + 5,
                GrowthRate = "test",
            }));

            // Generate
            pokemonStatUtility = new PokemonStatProvider(pokemonDAMock.Object, probabilityUtilityMock.Object);
            pokemonStatUtility.GetTeamBaseStats(team, 100);

            // Assert
            Assert.NotNull(team);
            foreach (var poke in team.Pokemon)
            {
                Assert.Equal(poke.SpeciesId + 2, poke.Defense);
                Assert.Equal(poke.SpeciesId + 1, poke.Attack);
                Assert.Equal(poke.SpeciesId + 4, poke.SpDefense);
                Assert.Equal(poke.SpeciesId + 3, poke.SpAttack);
                Assert.Equal(poke.SpeciesId + 5, poke.Speed);
            }

            // Verify
            pokemonDAMock.VerifyAll();
            probabilityUtilityMock.VerifyAll();
        }
        /// <inheritdoc />
        public void AssignIVsAndEVsToTeam(PokeList list, int level)
        {
            foreach (var poke in list.Pokemon)
            {
                // EVs between 0-65535
                poke.AttackEV    = (ushort)_probabilityUtility.GaussianRandomSkewed(0, 65535, level / 100D);
                poke.DefenseEV   = (ushort)_probabilityUtility.GaussianRandomSkewed(0, 65535, level / 100D);
                poke.HitPointsEV = (ushort)_probabilityUtility.GaussianRandomSkewed(0, 65535, level / 100D);
                poke.SpecialEV   = (ushort)_probabilityUtility.GaussianRandomSkewed(0, 65535, level / 100D);
                poke.SpeedEV     = (ushort)_probabilityUtility.GaussianRandomSkewed(0, 65535, level / 100D);

                // IVs between 0-15
                poke.AttackIV  = (byte)_probabilityUtility.GaussianRandom(0, 15);
                poke.DefenseIV = (byte)_probabilityUtility.GaussianRandom(0, 15);
                poke.SpecialIV = (byte)_probabilityUtility.GaussianRandom(0, 15);
                poke.SpeedIV   = (byte)_probabilityUtility.GaussianRandom(0, 15);
            }
        }
 // Method to load PokemonList from local disk
 private async Task LoadFromDisk(BindableCollection <PokemonModel> loadPokemonsCsv)
 {
     foreach (var pokemon in loadPokemonsCsv)
     {
         PokeList.Add(new PokemonModel
         {
             Id = pokemon.Id,
             PokeNameOriginal = pokemon.PokeNameOriginal,
             PokeName         = pokemon.PokeName,
             PokeUrl          = pokemon.PokeUrl
         });
         SearchPokeList.Add(new PokemonModel
         {
             Id = pokemon.Id,
             PokeNameOriginal = pokemon.PokeNameOriginal,
             PokeName         = pokemon.PokeName,
             PokeUrl          = pokemon.PokeUrl
         });
     }
     await _events.PublishOnUIThreadAsync(new LoadingBarEvent { LoadingCount = loadPokemonsCsv.Count }, CancellationToken.None);
 }
 //block button
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     if (PokeList.SelectedItem != null)
     {
         PokeGrid pokemon = PokeList.SelectedItem as PokeGrid;
         //PokeBlockedList.Items.Add(PokeList.SelectedItem);
         blockedlistItems.Add(pokemon);
         PokeBlockedList.ClearValue(ItemsControl.ItemsSourceProperty);
         PokeBlockedList.ItemsSource = blockedlistItems;
         //PokeList.Items.Remove(PokeList.SelectedItem);
         pokelistItems.Remove(pokemon);
         PokeList.ClearValue(ItemsControl.ItemsSourceProperty);
         PokeList.ItemsSource = pokelistItems;
         pokesCount          -= 1;
         PokesLeft.Text       = String.Format("Pokemon Left:\n {0}", pokesCount);
         RerollPokemon();
     }
     else
     {
         if (currentPokemon != null)
         {
             Console.WriteLine("unselected item, blocking current poke");
             //PokeBlockedList.Items.Add(PokeName.Text);
             blockedlistItems.Add(currentPokemon);
             //PokeList.Items.Remove(PokeName.Text);
             pokelistItems.Remove(currentPokemon);
             PokeBlockedList.ClearValue(ItemsControl.ItemsSourceProperty);
             PokeBlockedList.ItemsSource = blockedlistItems;
             PokeList.ClearValue(ItemsControl.ItemsSourceProperty);
             PokeList.ItemsSource = pokelistItems;
             pokesCount          -= 1;
             PokesLeft.Text       = String.Format("Pokemon Left:\n {0}", pokesCount);
             Console.WriteLine(currentPokemon.Name);
             RerollPokemon();
         }
     }
     savedFile = false;
 }
        // Dynamic search in UI ListView
        private void SearchInCollection()
        {
            SearchPokeList.Clear();
            var tempSearchString = PokeList.Where(x => x.PokeName.ToLower().Contains(SearchBox.ToLower()));
            var tempSearchId     = PokeList.Where(x => x.Id.ToString().Contains(SearchBox));

            // Try to search for numbers if Searchbox contains digits
            try
            {
                cSearch = SearchBox.ToCharArray()[0];
            }
            catch
            {
                //
            }

            if (cSearch >= '0' && cSearch <= '9')
            {
                foreach (var pokemon in tempSearchId)
                {
                    SearchPokeList.Add(new PokemonModel {
                        Id = pokemon.Id, PokeName = pokemon.PokeName, PokeNameOriginal = pokemon.PokeNameOriginal, PokeUrl = pokemon.PokeUrl
                    });
                }
            }
            else // Search for string
            {
                foreach (var pokemon in tempSearchString)
                {
                    SearchPokeList.Add(new PokemonModel {
                        Id = pokemon.Id, PokeName = pokemon.PokeName, PokeNameOriginal = pokemon.PokeNameOriginal, PokeUrl = pokemon.PokeUrl
                    });
                }
            }

            NotifyOfPropertyChange(() => SearchPokeList);
        }
Beispiel #13
0
        /// <summary>
        /// Completely parses a given file stream into a <see cref="PokeList"/> .
        /// </summary>
        private PokeList ParsePokeList(bool full, int capacity)
        {
            var list = new PokeList(capacity)
            {
                Count = _breader.ReadByte()
            };

            list.Pokemon = new Pokemon[list.Count];

            // Species
            for (var i = 0; i < capacity + 1; i++)
            {
                if (i < list.Count)
                {
                    list.Pokemon[i]           = new Pokemon();
                    list.Pokemon[i].SpeciesId = _breader.ReadByte();
                }
                else
                {
                    _breader.ReadByte();
                }
            }

            // Pokemon
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    Pokemon temp = ParsePokemon(!full);
                    temp.SpeciesId  = list.Pokemon[i].SpeciesId;
                    list.Pokemon[i] = temp;
                }
                else
                {
                    _breader.Seek(full ? 48 : 32, SeekOrigin.Current); // sizeof pokemon
                }
            }

            // OT Names
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    list.Pokemon[i].OTName = _breader.ReadString(11, _charset);
                }
                else
                {
                    _breader.ReadString(11, _charset);
                }
            }

            // Names
            for (var i = 0; i < capacity; i++)
            {
                if (i < list.Count)
                {
                    list.Pokemon[i].Name = _breader.ReadString(11, _charset);
                }
                else
                {
                    _breader.ReadString(11, _charset);
                }
            }
            return(list);
        }
 /// <inheritdoc />
 public IEnumerable <BaseStats> GetTeamBaseStats(PokeList list)
 {
     return(_dbConnection.Query <BaseStats>(Queries.Queries.GetTeamBaseStats, new { ids = list.Species.Select(s => (int)s).ToList() }, commandType: CommandType.Text));
 }