/// <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; } } }
/// <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; } }
/// <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)); }
public ItemsInventory CopyItemsInventory(ItemsInventory old) { ItemsInventory New = new ItemsInventory { id = old.id, itemGameObject = old.itemGameObject, count = old.count }; return(New); }
/// <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); } }
public void buyItem() { Item item = this.itemToBuy.GetComponent <Item>(); Destroy(this.itemToBuy); Player.setMoney(Player.getMoney() - item.getPrice()); gameObject.SetActive(false); ItemsInventory.addItem(item); }
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; } }
/// <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); }
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); }
/// <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); }
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(); } }
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(); } }
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); } }
/// <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; }
/// <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; }
/// <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); } } }
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); } }
/// <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; } } }
public CapturePokemonPageViewModel() { // Set default item SelectedCaptureItem = ItemsInventory.First(item => item.ItemId == ItemId.ItemPokeBall); }