Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parameter">MapPokemonWrapper containing the Pokemon that we're trying to capture</param>
        /// <param name="mode"></param>
        /// <param name="suspensionState"></param>
        /// <returns></returns>
        public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode,
                                                      IDictionary <string, object> suspensionState)
        {
            if (suspensionState.Any())
            {
                // Recovering the state
                CurrentPokemon      = (MapPokemonWrapper)suspensionState[nameof(CurrentPokemon)];
                CurrentEncounter    = (EncounterResponse)suspensionState[nameof(CurrentEncounter)];
                CurrentCaptureAward = (CaptureAward)suspensionState[nameof(CurrentCaptureAward)];
                SelectedCaptureItem = (ItemData)suspensionState[nameof(SelectedCaptureItem)];
            }
            else if (parameter is bool)
            {
                // Navigating from game page, so we need to actually load the encounter
                CurrentPokemon = (MapPokemonWrapper)NavigationHelper.NavigationState[nameof(CurrentPokemon)];
                Busy.SetBusy(true, Utils.Resources.Translation.GetString("LoadingEncounter") + Utils.Resources.Pokemon.GetString(CurrentPokemon.PokemonId.ToString()));
                NavigationHelper.NavigationState.Remove(nameof(CurrentPokemon));
                Logger.Write($"Catching {CurrentPokemon.PokemonId}");
                CurrentEncounter = await GameClient.EncounterPokemon(CurrentPokemon.EncounterId, CurrentPokemon.SpawnpointId);

                SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall);
                Busy.SetBusy(false);
                if (CurrentEncounter.Status != EncounterResponse.Types.Status.EncounterSuccess)
                {
                    // Encounter failed, probably the Pokemon ran away
                    await new MessageDialog("Pokemon ran away, sorry :(").ShowAsyncQueue();
                    ReturnToGameScreen.Execute();
                }
            }
            await Task.CompletedTask;
        }
        /// <summary>
        /// Selects the first ball based on available items
        /// </summary>
        private void SelectStartingBall()
        {
            // Set default item (switch to other balls if user has none)
            SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall);
            while (SelectedCaptureItem.Count == 0)
            {
                switch (SelectedCaptureItem.ItemId)
                {
                case ItemId.ItemPokeBall:
                    // Try with Greatball
                    SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemGreatBall);
                    break;

                case ItemId.ItemGreatBall:
                    // Try with Ultraball
                    SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemUltraBall);
                    break;

                case ItemId.ItemUltraBall:
                    // Try with Masterball
                    SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemMasterBall);
                    break;

                case ItemId.ItemMasterBall:
                    // User has no left balls, choose Pokeball to stop him from trying to capture
                    SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall);
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Selects the first ball based on available items
        /// </summary>
        private void SelectStartingBall(bool keepPreviousSelection = false)
        {
            // Set default item (switch to other balls if user has none)
            if (!keepPreviousSelection)
            {
                SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall) ?? new ItemData
                {
                    Count = 0, ItemId = ItemId.ItemPokeBall
                };
            }
            else
            {
                // Start with a ball of the same type as the one that's currently used
                SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == SelectedCaptureItem.ItemId);
            }
            while (SelectedCaptureItem != null && SelectedCaptureItem.Count == 0)
            {
                switch (SelectedCaptureItem.ItemId)
                {
                case ItemId.ItemPokeBall:
                    // Try with Greatball
                    SelectedCaptureItem = ItemsInventory.FirstOrDefault(item => item.ItemId == ItemId.ItemGreatBall);
                    if (SelectedCaptureItem == null)
                    {
                        SelectedCaptureItem = new ItemData()
                        {
                            Count  = 0,
                            ItemId = ItemId.ItemGreatBall
                        };
                    }
                    break;

                case ItemId.ItemGreatBall:
                    // Try with Ultraball
                    SelectedCaptureItem = ItemsInventory.FirstOrDefault(item => item.ItemId == ItemId.ItemUltraBall);
                    if (SelectedCaptureItem == null)
                    {
                        SelectedCaptureItem = new ItemData()
                        {
                            Count  = 0,
                            ItemId = ItemId.ItemUltraBall
                        };
                    }
                    break;

                case ItemId.ItemUltraBall:
                    // Try with Masterball
                    SelectedCaptureItem = ItemsInventory.FirstOrDefault(item => item.ItemId == ItemId.ItemMasterBall);
                    if (SelectedCaptureItem == null)
                    {
                        SelectedCaptureItem = new ItemData()
                        {
                            Count  = 0,
                            ItemId = ItemId.ItemMasterBall
                        };
                    }
                    break;

                case ItemId.ItemMasterBall:
                    // User has no left balls, choose a non-existing Pokeball to stop him from trying to capture
                    SelectedCaptureItem = new ItemData
                    {
                        Count  = 0,
                        ItemId = ItemId.ItemPokeBall
                    };
                    return;
                }
            }
        }
Ejemplo n.º 4
0
 public CapturePokemonPageViewModel()
 {
     // Set default item
     SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall);
 }