/// <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;
                }
            }
        }
Пример #2
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;
        }
        private async void UseRevive(PokemonDataWrapper pokemon, ItemId item)
        {
            try
            {
                ServerRequestRunning = true;
                // Use local var to prevent bug when changing selected pokemon during running request
                var affectingPokemon = SelectedPokemon;
                // Send revive request
                var res = await GameClient.UseItemRevive(item, pokemon.Id);

                switch (res.Result)
                {
                case UseItemReviveResponse.Types.Result.Unset:
                    break;

                case UseItemReviveResponse.Types.Result.Success:
                    // Reload updated data
                    bool selectedPokemonSameAsAffecting = affectingPokemon == SelectedPokemon;
                    PokemonInventory.Remove(affectingPokemon);
                    var affectedPokemon = new PokemonDataWrapper(affectingPokemon.WrappedData);
                    affectedPokemon.SetStamina(res.Stamina);
                    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));
                    }
                    await GameClient.UpdateProfile();

                    // If nothing of this item is left, remove from inventory manually and return to the inventory overview page
                    if (CurrentUseItem?.Count == 0)
                    {
                        ItemsInventory.Remove(CurrentUseItem);
                        ReturnToInventoryCommand.Execute();
                    }
                    break;

                case UseItemReviveResponse.Types.Result.ErrorDeployedToFort:
                    ErrorDeployedToFort?.Invoke(this, null);
                    break;

                case UseItemReviveResponse.Types.Result.ErrorCannotUse:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            finally
            {
                ServerRequestRunning = false;
            }
        }
Пример #4
0
        /// <summary>Selects the pokeball type from Inventory</summary>
        /// <param name="itemId">The item identifier</param>
        /// <returns>Found balls or null</returns>
        private ItemData SelectPokeballType(ItemId?itemId)
        {
            if (itemId == null)
            {
                return(null);
            }

            return(ItemsInventory?.FirstOrDefault(item => item.ItemId == itemId));
        }
Пример #5
0
    public ItemsInventory CopyItemsInventory(ItemsInventory old)
    {
        ItemsInventory New = new ItemsInventory
        {
            id             = old.id,
            itemGameObject = old.itemGameObject,
            count          = old.count
        };

        return(New);
    }
Пример #6
0
        /// <summary>
        ///     Updates inventory data
        /// </summary>
        public static async Task UpdateInventory()
        {
            // Get ALL the items
            var fullInventory     = (await GetInventory()).InventoryDelta.InventoryItems;
            var tmpItemsInventory = fullInventory.Where(item => item.InventoryItemData.Item != null).GroupBy(item => item.InventoryItemData.Item);

            ItemsInventory.Clear();
            foreach (var item in tmpItemsInventory)
            {
                ItemsInventory.Add(item.First().InventoryItemData.Item);
            }
        }
Пример #7
0
    public void buyItem()
    {
        Item item = this.itemToBuy.GetComponent <Item>();

        Destroy(this.itemToBuy);

        Player.setMoney(Player.getMoney() - item.getPrice());

        gameObject.SetActive(false);

        ItemsInventory.addItem(item);
    }
Пример #8
0
    private void inventoryUpdater()
    {
        if (ItemsInventory.getItems().Count > 0)
        {
            string englishtemName     = ItemsInventory.getItems()[this.actualItemIndex].getEnglishName();
            string actualItemName     = ItemsInventory.getItems()[this.actualItemIndex].getName();
            int    actualItemQuantity = 0;

            // Item game object
            for (int i = 0; i < this.itemsHolder.transform.childCount; i++)
            {
                Destroy(this.itemsHolder.transform.GetChild(i).gameObject);
            }

            this.itemsHolder.GetComponent <InventoryItems>().instantiate(englishtemName);

            // Item description
            foreach (Item item in ItemsInventory.getItems())
            {
                if (item.getName().Equals(actualItemName))
                {
                    actualItemQuantity++;
                }
            }

            this.itemNameAndQuantityText.text = actualItemName + " - x" + actualItemQuantity;
        }
        else
        {
            string emptyString = "Empty";

            switch (Configurations.Options.language)
            {
            case Configurations.Options.languages.ENGLISH:
                emptyString = "Empty";
                break;

            case Configurations.Options.languages.PORTUGUESE:
                emptyString = "Vazia";
                break;

            case Configurations.Options.languages.SPANISH:
                emptyString = "Vacía";
                break;

            default:
                emptyString = "Empty";
                break;
            }

            this.itemNameAndQuantityText.text = emptyString;
        }
    }
Пример #9
0
        /// <summary>
        ///     Updates inventory data
        /// </summary>
        public static async Task UpdateInventory()
        {
            // Get ALL the items
            var response = await GetInventory();

            var fullInventory = response.InventoryDelta?.InventoryItems;

            // Update items
            ItemsInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.Item != null)
                                    .GroupBy(item => item.InventoryItemData.Item)
                                    .Select(item => item.First().InventoryItemData.Item), true);
            CatchItemsInventory.AddRange(
                fullInventory.Where(
                    item =>
                    item.InventoryItemData.Item != null && CatchItemIds.Contains(item.InventoryItemData.Item.ItemId))
                .GroupBy(item => item.InventoryItemData.Item)
                .Select(item => item.First().InventoryItemData.Item), true);
            AppliedItems.AddRange(
                fullInventory
                .Where(item => item.InventoryItemData.AppliedItems != null)
                .SelectMany(item => item.InventoryItemData.AppliedItems.Item)
                .Select(item => new AppliedItemWrapper(item)), true);

            // Update incbuators
            IncubatorsInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.EggIncubators != null)
                                         .SelectMany(item => item.InventoryItemData.EggIncubators.EggIncubator)
                                         .Where(item => item != null), true);

            // Update Pokedex
            PokedexInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.PokedexEntry != null)
                                      .Select(item => item.InventoryItemData.PokedexEntry), true);

            // Update Pokemons
            PokemonsInventory.AddRange(fullInventory.Select(item => item.InventoryItemData.PokemonData)
                                       .Where(item => item != null && item.PokemonId > 0), true);
            EggsInventory.AddRange(fullInventory.Select(item => item.InventoryItemData.PokemonData)
                                   .Where(item => item != null && item.IsEgg), true);

            // Update candies
            CandyInventory.AddRange(from item in fullInventory
                                    where item.InventoryItemData?.Candy != null
                                    where item.InventoryItemData?.Candy.FamilyId != PokemonFamilyId.FamilyUnset
                                    group item by item.InventoryItemData?.Candy.FamilyId into family
                                    select new Candy
            {
                FamilyId = family.FirstOrDefault().InventoryItemData.Candy.FamilyId,
                Candy_   = family.FirstOrDefault().InventoryItemData.Candy.Candy_
            }, true);
        }
Пример #10
0
    public void AddInventoryItem(int id, ItemsInventory itemsInventory)
    {
        items[id].id    = itemsInventory.id;
        items[id].count = itemsInventory.count;
        items[id].itemGameObject.GetComponent <Image>().sprite = invbase.items[itemsInventory.id].sprite;

        if (itemsInventory.count > 1 && itemsInventory.id != 0)
        {
            items[id].itemGameObject.GetComponentInChildren <Text>().text = itemsInventory.count.ToString();
        }
        else
        {
            items[id].itemGameObject.GetComponentInChildren <Text>().text = "";
        }
    }
        /// <summary>Selects the modifier type from Inventory</summary>
        /// <param name="itemId">The item identifier</param>
        /// <returns>Found modifier or null</returns>
        private ItemData SelectModifierType(ItemId?itemId)
        {
            if (itemId == null)
            {
                return(null);
            }

            var modifier = ItemsInventory?.FirstOrDefault(item => item.ItemId == itemId);

            if (modifier == null || modifier.Count <= 0)
            {
                return(null);
            }

            return(modifier);
        }
Пример #12
0
        /// <summary>Selects the pokeball type from Inventory</summary>
        /// <param name="itemId">The item identifier</param>
        /// <returns>Found balls or null</returns>
        private ItemData SelectPokeballType(ItemId?itemId)
        {
            if (itemId == null)
            {
                return(null);
            }

            var ball = ItemsInventory?.FirstOrDefault(item => item.ItemId == itemId);

            if (ball == null || ball.Count <= 0)
            {
                return(null);
            }

            return(ball);
        }
Пример #13
0
    public void addActualItemIndex()
    {
        if (ItemsInventory.getItems().Count > 0)
        {
            this.lastItemIndex = this.actualItemIndex;

            this.actualItemIndex++;

            if (this.actualItemIndex > ItemsInventory.getItems().Count - 1)
            {
                this.actualItemIndex = 0;
            }

            Item actualItem = ItemsInventory.getItems()[this.actualItemIndex];
            Item lastItem   = ItemsInventory.getItems()[this.lastItemIndex];

            if (actualItem.getName().Equals(lastItem.getName()))
            {
                bool goToFirst = true;

                for (int i = this.actualItemIndex; i < ItemsInventory.getItems().Count; i++)
                {
                    Item item = ItemsInventory.getItems()[i];

                    if (!actualItem.getName().Equals(item.getName()))
                    {
                        this.actualItemIndex = i;

                        goToFirst = false;

                        break;
                    }
                }

                if (goToFirst)
                {
                    this.actualItemIndex = 0;
                }
            }

            this.inventoryUpdater();
        }
    }
Пример #14
0
    public void decActualItemIndex()
    {
        if (ItemsInventory.getItems().Count > 0)
        {
            this.lastItemIndex = this.actualItemIndex;

            this.actualItemIndex--;

            if (this.actualItemIndex < 0)
            {
                this.actualItemIndex = ItemsInventory.getItems().Count - 1;
            }

            Item actualItem = ItemsInventory.getItems()[this.actualItemIndex];
            Item lastItem   = ItemsInventory.getItems()[this.lastItemIndex];

            if (actualItem.getName().Equals(lastItem.getName()))
            {
                bool goToLast = true;

                for (int i = this.actualItemIndex; i > 0; i--)
                {
                    Item item = ItemsInventory.getItems()[i];

                    if (!actualItem.getName().Equals(item.getName()))
                    {
                        this.actualItemIndex = i;

                        goToLast = false;

                        break;
                    }
                }

                if (goToLast)
                {
                    this.actualItemIndex = ItemsInventory.getItems().Count - 1;
                }
            }

            this.inventoryUpdater();
        }
    }
Пример #15
0
 public void AddGraf()
 {
     for (int i = 0; i < maxCount; i++)
     {
         GameObject NewItem = Instantiate(GameObjectShow, InventoryMainObject.transform) as GameObject;
         NewItem.name = i.ToString();
         ItemsInventory itemsInventory = new ItemsInventory
         {
             itemGameObject = NewItem
         };
         RectTransform rt = NewItem.GetComponent <RectTransform>();
         rt.localPosition = new Vector3(0, 0, 0);
         rt.localScale    = new Vector3(1, 1, 1);
         NewItem.GetComponentInChildren <RectTransform>().localScale = new Vector3(1, 1, 1);
         Button button = NewItem.GetComponent <Button>();
         button.onClick.AddListener(delegate { SelectObject(); });
         items.Add(itemsInventory);
     }
 }
Пример #16
0
        /// <summary>
        ///     Updates inventory data
        /// </summary>
        public static async Task UpdateInventory()
        {
            // Get ALL the items
            var fullInventory = (await GetInventory()).InventoryDelta.InventoryItems;
            // Update items
            var tmpItemsInventory = fullInventory.Where(item => item.InventoryItemData.Item != null).GroupBy(item => item.InventoryItemData.Item);

            ItemsInventory.Clear();
            foreach (var item in tmpItemsInventory)
            {
                ItemsInventory.Add(item.First().InventoryItemData.Item);
            }
            // Update Pokemons
            var tmpPokemonsInventory = fullInventory.Where(item => item.InventoryItemData.PokemonData != null).Select(itemt => itemt.InventoryItemData.PokemonData);

            PokemonsInventory.Clear();
            foreach (var pokemon in tmpPokemonsInventory)
            {
                PokemonsInventory.Add(pokemon);
            }
        }
        /// <summary>
        /// </summary>
        /// <param name="parameter"></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
                ItemsInventory = JsonConvert.DeserializeObject <ObservableCollection <ItemDataWrapper> >((string)suspensionState[nameof(ItemsInventory)]);
            }
            else if (parameter is bool)
            {
                // Navigating from game page, so we need to actually load the inventory
                // The sorting mode is directly bound to the settings
                ItemsInventory = new ObservableCollection <ItemDataWrapper>(
                    GameClient.ItemsInventory.Select(itemData => new ItemDataWrapper(itemData)));

                RaisePropertyChanged(() => ItemsInventory);
            }

            ItemsTotalCount = ItemsInventory.Sum(i => i.WrappedData.Count);

            await Task.CompletedTask;
        }
Пример #18
0
        /// <summary>
        ///     Updates inventory data
        /// </summary>
        public static async Task UpdateInventory()
        {
            // Get ALL the items
            var fullInventory = (await GetInventory()).InventoryDelta.InventoryItems;

            // Update items
            ItemsInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.Item != null)
                                    .GroupBy(item => item.InventoryItemData.Item)
                                    .Select(item => item.First().InventoryItemData.Item), true);
            CatchItemsInventory.AddRange(
                fullInventory.Where(
                    item =>
                    item.InventoryItemData.Item != null && CatchItemIds.Contains(item.InventoryItemData.Item.ItemId))
                .GroupBy(item => item.InventoryItemData.Item)
                .Select(item => item.First().InventoryItemData.Item), true);

            // Update incbuators
            FreeIncubatorsInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.EggIncubators != null)
                                             .SelectMany(item => item.InventoryItemData.EggIncubators.EggIncubator)
                                             .Where(item => item != null && item.PokemonId == 0), true);
            UsedIncubatorsInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.EggIncubators != null)
                                             .SelectMany(item => item.InventoryItemData.EggIncubators.EggIncubator)
                                             .Where(item => item != null && item.PokemonId != 0), true);

            // Update Pokemons
            PokemonsInventory.AddRange(fullInventory.Select(item => item.InventoryItemData.PokemonData)
                                       .Where(item => item != null && item.PokemonId > 0), true);
            EggsInventory.AddRange(fullInventory.Select(item => item.InventoryItemData.PokemonData)
                                   .Where(item => item != null && item.IsEgg), true);

            // Update Pokedex
            PokedexInventory.AddRange(fullInventory.Where(item => item.InventoryItemData.PokedexEntry != null)
                                      .Select(item => item.InventoryItemData.PokedexEntry), true);

            // Update Player stats
            PlayerStats =
                fullInventory.First(item => item.InventoryItemData.PlayerStats != null).InventoryItemData.PlayerStats;
        }
Пример #19
0
        /// <summary>
        ///     Updates inventory data
        /// </summary>
        public static async Task UpdateInventory()
        {
            // Get ALL the items
            var fullInventory = (await GetInventory()).InventoryDelta.InventoryItems;
            // Update items
            var tmpItemsInventory = fullInventory.Where(item => item.InventoryItemData.Item != null).GroupBy(item => item.InventoryItemData.Item);

            ItemsInventory.Clear();
            foreach (var item in tmpItemsInventory)
            {
                ItemsInventory.Add(item.First().InventoryItemData.Item);
            }
            // Update incbuators
            //var tmpIncubatorsInventory = fullInventory.Where(item => item.InventoryItemData.EggIncubators != null).GroupBy(item => item.InventoryItemData.EggIncubators);
            //IncubatorsInventory.Clear();
            //foreach (var item in tmpIncubatorsInventory)
            //{
            //    IncubatorsInventory.Add(item.First().InventoryItemData.Item);
            //}
            // Update Pokemons
            var tmpPokemonsInventory = fullInventory.Where(item => item.InventoryItemData.PokemonData != null).Select(itemt => itemt.InventoryItemData.PokemonData);

            PokemonsInventory.Clear();
            EggsInventory.Clear();
            foreach (var pokemon in tmpPokemonsInventory)
            {
                if (pokemon.IsEgg)
                {
                    EggsInventory.Add(pokemon);
                }
                else
                {
                    PokemonsInventory.Add(pokemon);
                }
            }
        }
Пример #20
0
    public void SelectObject()
    {
        if (currentID == -1)
        {
            currentID   = int.Parse(es.currentSelectedGameObject.name);
            currentItem = CopyItemsInventory(items[currentID]);
            movingObject.gameObject.SetActive(true);
            movingObject.GetComponent <Image>().sprite = invbase.items[currentItem.id].sprite;

            AddItem(currentID, invbase.items[0], 0);
        }
        else
        {
            ItemsInventory itemsInventory = items[int.Parse(es.currentSelectedGameObject.name)];
            if (currentItem.id != itemsInventory.id)
            {
                AddInventoryItem(currentID, itemsInventory);
                AddInventoryItem(int.Parse(es.currentSelectedGameObject.name), currentItem);
            }
            else
            {
                if (itemsInventory.count + currentItem.count <= 64)
                {
                    itemsInventory.count += currentItem.count;
                }
                else
                {
                    AddItem(currentID, invbase.items[itemsInventory.id], itemsInventory.count + currentItem.count - 64);
                    itemsInventory.count = 64;
                }
                itemsInventory.itemGameObject.GetComponentInChildren <Text>().text = itemsInventory.count.ToString();
            }
            currentID = -1;
            movingObject.gameObject.SetActive(false);
        }
    }
Пример #21
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;
                }
            }
        }
Пример #22
0
 public CapturePokemonPageViewModel()
 {
     // Set default item
     SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall);
 }