void OnPurchased(PurchaseItemResult res) { Debug.Log("ITEM BOUGHT (" + res.Items.Count + ") " + res.Items[0].DisplayName); Debug.Log("inventory count " + ClientSessionData.Instance.InventoryItems.Count); //updating UI labCO.text = ClientSessionData.Instance.currencyCO.ToString(); labPC.text = ClientSessionData.Instance.currencyPC.ToString(); //add to inventory FMInventoryItem inviItem = ClientSessionData.Instance.InventoryItems.Find(x => x.CatalogID.Equals(res.Items[0].ItemId)); //if there is already an instance id, we just add 1 if (inviItem != null && inviItem.IsStackable) { inviItem.Amount += 1; labOwned.text = inviItem.Amount.ToString(); Debug.Log("inventory new count (stack)" + ClientSessionData.Instance.InventoryItems.Count); return; } //if the item is new or not stackable, we add it to the inventory if (inviItem == null) { CatalogItem cItem = ClientSessionData.Instance.CatalogItems.Find(x => x.ItemId.Equals(res.Items[0].ItemId)); FMPlayFabInventory.AddInventoryItem(res.Items[0], ClientSessionData.Instance.InventoryItems, cItem); Debug.Log("inventory new count " + ClientSessionData.Instance.InventoryItems.Count); } }
int SortByType(Transform a, Transform b) { FMInventoryItem c1 = a.GetComponent <FMInventoryItemUI>().Item; FMInventoryItem c2 = b.GetComponent <FMInventoryItemUI>().Item; return(string.Compare(c1.ItemClass, c2.ItemClass)); }
int SortByID(Transform a, Transform b) { FMInventoryItem c1 = a.GetComponent <FMInventoryItemUI>().Item; FMInventoryItem c2 = b.GetComponent <FMInventoryItemUI>().Item; return(string.Compare(c1.CatalogID, c2.CatalogID)); }
int SortByName(Transform a, Transform b) { FMInventoryItem c1 = a.GetComponent <FMInventoryItemUI>().Item; FMInventoryItem c2 = b.GetComponent <FMInventoryItemUI>().Item; return(string.Compare(c1.DisplayName, c2.DisplayName)); }
public void SetData(FMInventoryItem iitem) { Item = iitem; labitemName.text = iitem.DisplayName; if (!string.IsNullOrEmpty(iitem.SpriteName)) { spriteItem.spriteName = iitem.SpriteName; } labAmount.text = iitem.IsStackable ? "x " + iitem.Amount.ToString() : ""; checkFavorite.value = iitem.IsFavorite; //if equipment, show E equipedIcon.SetActive(!iitem.IsItem() && iitem.IsEquipped); }
public void BackToHome() { List <FMInventoryItem> clientItems = ClientSessionData.Instance.InventoryItems; JSONArray json = new JSONArray(); //send to server favorites and eqquiped items for (int i = 0; i < grid.GetComponentsInChildren <Transform>(true).Length; i++) { FMInventoryItemUI item = grid.GetComponentsInChildren <Transform>(true)[i].GetComponent <FMInventoryItemUI>(); if (item != null) { item.Item.IsFavorite = item.isFavorite; JSONNode node = JSON.Parse("{}"); node.Add("item", item.Item.InstanceID); node.Add("is_favorite", item.isFavorite); //json[i]["item"] = item.Item.InstanceID; //json[i]["is_favorite"] = item.isFavorite; if (item.Item.IsEquipment()) { node.Add("is_equipped", item.Item.IsEquipped); //json[i]["is_equipped"] = item.Item.IsEquipped; } //saving on client FMInventoryItem savedItem = ClientSessionData.Instance.InventoryItems.Find(x => x.InstanceID.Equals(item.Item.InstanceID)); if (savedItem != null) { savedItem = item.Item; } json[i] = node; } } //if there was no changes, just go back if (clientItems == ClientSessionData.Instance.InventoryItems) { SceneManager.LoadScene("Home"); Debug.Log("no changes"); return; } Debug.Log("el json " + json.ToString()); //calling playfab PlayfabUtils.Instance.UpdateInventoryEquip(json, result => { Debug.Log("updated successfully"); }, error => { Debug.Log("error on update"); }); SceneManager.LoadScene("Home"); }
public static void AddInventoryItem(ItemInstance newItem, List <FMInventoryItem> invItems, CatalogItem catalogItem) { Debug.Log("inventory items count " + invItems.Count); //add to inventry FMInventoryItem iItem = invItems.Find(x => x.CatalogID.Equals(newItem.ItemInstanceId)); //if the item was already in inventory if (iItem != null && catalogItem.IsStackable) { iItem.Amount += 1; return; } //else, we add it to the inventory if (iItem == null) { invItems.Add(CreateInventoryItem(catalogItem, newItem)); Debug.Log("added to inventory items"); } }
static FMInventoryItem CreateInventoryItem(CatalogItem cItem, ItemInstance iItem) { FMInventoryItem invItem = new FMInventoryItem(); invItem.DisplayName = cItem.DisplayName; invItem.CatalogID = cItem.ItemId; invItem.InstanceID = iItem.ItemInstanceId; invItem.ItemClass = cItem.ItemClass; invItem.Description = cItem.Description; invItem.SpriteName = cItem.ItemImageUrl; invItem.Amount = cItem.IsStackable ? (int)iItem.RemainingUses : 1; invItem.Tags = cItem.Tags; invItem.Prices = cItem.VirtualCurrencyPrices; invItem.IsStackable = cItem.IsStackable; if (!string.IsNullOrEmpty(cItem.CustomData)) { //Debug.Log("item custom json " + cItem.CustomData); JSONNode jsonEffects = JSON.Parse(cItem.CustomData); Dictionary <string, string> dicEffect = new Dictionary <string, string>(); dicEffect.Add(jsonEffects["effect"].Value, jsonEffects["value"]); invItem.Effects = dicEffect; } //custom item instance data string isFavKey = "false"; string isEquipKey = "false"; if (iItem.CustomData != null && iItem.CustomData.TryGetValue("is_favorite", out isFavKey)) //iItem.CustomData.ContainsKey("is_favorite") { invItem.IsFavorite = bool.Parse(isFavKey); //iItem.CustomData["is_favorite"] //Debug.Log(invItem.DisplayName+" has is favorite, "+ invItem.IsFavorite); } if (iItem.CustomData != null && iItem.CustomData.TryGetValue("is_equipped", out isEquipKey)) { invItem.IsEquipped = bool.Parse(isEquipKey); //Debug.Log(invItem.DisplayName + " has is equipped, " + invItem.IsEquipped); } return(invItem); }
void DisplaySelectedItemInfo(FMStoreItemUI item) { buttonCO.isEnabled = true; buttonPC.isEnabled = true; if (selectedItem != null) { selectedItem.Unselect(); } labItenName.text = item.Item.DisplayName; itemSprite.spriteName = item.Item.ItemImageUrl; labDescription.text = item.Item.Description; uint CO; uint PC; bool hasCO = item.Item.VirtualCurrencyPrices.TryGetValue("CO", out CO); bool hasPC = item.Item.VirtualCurrencyPrices.TryGetValue("PC", out PC); buttonCO.GetComponentInChildren <UILabel>().text = hasCO ? CO.ToString() : "--"; buttonPC.GetComponentInChildren <UILabel>().text = hasPC ? PC.ToString() : "--"; //disable buttons if there is no currency if (!hasCO) { buttonCO.isEnabled = false; } if (!hasPC) { buttonPC.isEnabled = false; } FMInventoryItem invItem = ClientSessionData.Instance.InventoryItems.Find(x => x.CatalogID.Equals(item.Item.ItemId)); labOwned.text = invItem != null?invItem.Amount.ToString() : "0"; selectedItem = item; }