Пример #1
0
    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);
        }
    }
Пример #2
0
    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));
    }
Пример #3
0
    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));
    }
Пример #4
0
    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));
    }
Пример #5
0
    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);
    }
Пример #6
0
    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");
    }
Пример #7
0
    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");
        }
    }
Пример #8
0
    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);
    }
Пример #9
0
    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;
    }