private void AskAndUseRevive(ItemDataWrapper item)
        {
            PokemonInventory = new ObservableCollection <PokemonDataWrapper>(GameClient.PokemonsInventory
                                                                             .Select(pokemonData => new PokemonDataWrapper(pokemonData))
                                                                             .Where(pokemonData => pokemonData.Stamina == 0));

            CurrentUseItem = item;

            RaisePropertyChanged(() => PokemonInventory);
            RaisePropertyChanged(() => CurrentUseItem);

            AskForPokemonSelection?.Invoke(this, null);
        }
        private void AskAndUseRevive(ItemDataWrapper item)
        {
            PokemonInventory = new ObservableCollection <PokemonDataWrapper>(GameClient.PokemonsInventory
                                                                             .Select(pokemonData => new PokemonDataWrapper(pokemonData))
                                                                                                                                        //.Where(pokemonData => pokemonData.Stamina == 0));
                                                                             .Where(pokemonData => pokemonData.Stamina == 0 &&          // Fainted
                                                                                    String.IsNullOrEmpty(pokemonData.DeployedFortId))); // Not deployed to fort

            CurrentUseItem = item;

            RaisePropertyChanged(() => PokemonInventory);
            RaisePropertyChanged(() => CurrentUseItem);

            AskForPokemonSelection?.Invoke(this, null);
        }
        private void AskAndUseLuckyEgg(ItemDataWrapper item)
        {
            if (!GameClient.IsXpBoostActive)
            {
                var dialog = new PoGoMessageDialog("", string.Format(Resources.CodeResources.GetString("ItemUseQuestionText"), Resources.Items.GetString(item.ItemId.ToString())));
                dialog.AcceptText      = Resources.CodeResources.GetString("YesText");
                dialog.CancelText      = Resources.CodeResources.GetString("CancelText");
                dialog.CoverBackground = true;
                dialog.AnimationType   = PoGoMessageDialogAnimation.Bottom;
                dialog.AcceptInvoked  += async(sender, e) =>
                {
                    // Send use request
                    var res = await GameClient.UseXpBoost(item.ItemId);

                    switch (res.Result)
                    {
                    case UseItemXpBoostResponse.Types.Result.Success:
                        AppliedItem appliedItem = res.AppliedItems.Item.FirstOrDefault <AppliedItem>();
                        GameClient.AppliedItems.Add(new AppliedItemWrapper(appliedItem));
                        ReturnToGameScreen.Execute();
                        break;

                    case UseItemXpBoostResponse.Types.Result.ErrorXpBoostAlreadyActive:
                        ReturnToGameScreen.Execute();
                        break;

                    case UseItemXpBoostResponse.Types.Result.ErrorInvalidItemType:
                    case UseItemXpBoostResponse.Types.Result.ErrorLocationUnset:
                    case UseItemXpBoostResponse.Types.Result.ErrorNoItemsRemaining:
                    case UseItemXpBoostResponse.Types.Result.Unset:
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                };

                dialog.Show();
            }
        }
        private void AskAndUseIncense(ItemDataWrapper item)
        {
            if (!GameClient.IsIncenseActive)
            {
                var dialog = new PoGoMessageDialog("", string.Format(Resources.CodeResources.GetString("ItemUseQuestionText"), Resources.Items.GetString(item.ItemId.ToString())));
                dialog.AcceptText      = Resources.CodeResources.GetString("YesText");
                dialog.CancelText      = Resources.CodeResources.GetString("CancelText");
                dialog.CoverBackground = true;
                dialog.AnimationType   = PoGoMessageDialogAnimation.Bottom;
                dialog.AcceptInvoked  += async(sender, e) =>
                {
                    //// Send use request
                    var res = await GameClient.UseIncense(item.ItemId);

                    switch (res.Result)
                    {
                    case UseIncenseResponse.Types.Result.Success:
                        GameClient.AppliedItems.Add(new AppliedItemWrapper(res.AppliedIncense));
                        ReturnToGameScreen.Execute();
                        break;

                    case UseIncenseResponse.Types.Result.IncenseAlreadyActive:
                        ReturnToGameScreen.Execute();
                        break;

                    case UseIncenseResponse.Types.Result.LocationUnset:
                    case UseIncenseResponse.Types.Result.NoneInInventory:
                    case UseIncenseResponse.Types.Result.Unknown:
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                };

                dialog.Show();
            }
        }