// 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(); } }
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); } }
/// <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; }
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); }
/// <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)); }