private async void UsePotion(PokemonDataWrapper pokemon, ItemId item) { try { ServerRequestRunning = true; // Use local var to prevent bug when changing selected pokemon during running request var affectingPokemon = SelectedPokemon; // Send potion request var res = await GameClient.UseItemPotion(item, affectingPokemon.Id); switch (res.Result) { case UseItemPotionResponse.Types.Result.Unset: break; case UseItemPotionResponse.Types.Result.Success: // Reload updated data bool selectedPokemonSameAsAffecting = affectingPokemon == SelectedPokemon; PokemonInventory.Remove(affectingPokemon); var affectedPokemon = new PokemonDataWrapper(affectingPokemon.WrappedData); affectedPokemon.SetStamina(res.Stamina); if (affectedPokemon.Stamina < affectedPokemon.StaminaMax) { PokemonInventory.Add(affectedPokemon); } PokemonInventory.SortBySortingmode(CurrentPokemonSortingMode); CurrentUseItem.Count--; // If the affecting pokemon is still showing (not fliped to other), change selected to affected if (selectedPokemonSameAsAffecting) { SelectedPokemon = affectedPokemon; RaisePropertyChanged(nameof(SelectedPokemon)); RaisePropertyChanged(nameof(CurrentUseItem)); } //GameClient.UpdateInventory(); await GameClient.UpdateProfile(); break; case UseItemPotionResponse.Types.Result.ErrorDeployedToFort: ErrorDeployedToFort?.Invoke(this, null); break; case UseItemPotionResponse.Types.Result.ErrorCannotUse: break; default: throw new ArgumentOutOfRangeException(); } } finally { ServerRequestRunning = false; } }
public void Load(ulong selectedPokemonId, PokemonSortingModes sortingMode, PokemonDetailPageViewMode viewMode) { PokemonInventory.Clear(); SortingMode = sortingMode; ViewMode = viewMode; if (viewMode == PokemonDetailPageViewMode.Normal) { // Navigating from inventory page so we need to load the pokemoninventory and the current pokemon PokemonInventory.AddRange(GameClient.PokemonsInventory.Select(pokemonData => new PokemonDataWrapper(pokemonData)).SortBySortingmode(sortingMode)); SelectedPokemon = PokemonInventory.FirstOrDefault(pokemon => pokemon.Id == selectedPokemonId); } else { // Navigating from Capture, Egg hatch or evolve, only show this pokemon PokemonInventory.Add(GameClient.PokemonsInventory.Where(pokemon => pokemon.Id == selectedPokemonId).Select(pokemonData => new PokemonDataWrapper(pokemonData)).FirstOrDefault()); SelectedPokemon = PokemonInventory.First(); } StardustAmount = GameClient.PlayerProfile.Currencies.FirstOrDefault(item => item.Name.Equals("STARDUST")).Amount; PlayerTeamIsSet = GameClient.PlayerProfile.Team != TeamColor.Neutral; }