Esempio n. 1
0
    /**<summary> Load saved player data </summary>*/
    public async Task Load()
    {
        string dataJson = await ServerAPI.GetPlayer(id);

        if (!dataJson.IsNullOrEmpty())
        {
            Debug.Log(dataJson);
            try
            {
                Data playerData = JsonConvert.DeserializeObject <Data>(dataJson, ServerAPI.deserialise);
                if (playerData != null)
                {
                    data = playerData;
                }
            }
            catch (Exception e) { Debug.LogError(e); }
        }
        if (data.inventory.Count == 0 && data.experience == 0)
        {
            AddDefaultItems();
        }

        if (data.equippedItems.Count > 0)
        {
            foreach (ItemData item in data.equippedItems)
            {
                EquipItem(item);
            }
            SelectItemAsActive(data.activeItemIndex);
            OnActiveItemChanged?.Invoke(data.activeItemIndex >= 0 ? data.equippedItems[data.activeItemIndex] : null, data.activeItemIndex);
        }
        UpdatePlayerStats(false);
    }
Esempio n. 2
0
    /**<summary> Unequip an Item </summary>*/
    private void UnequipItem(int itemIndex)
    {
        if (equippedItems.Count > 0)
        {
            Destroy(equippedItems[itemIndex].gameObject);
            equippedItems.RemoveAt(itemIndex);
            SelectItemAsActive(equippedItems.Count - 1);
        }
        if (equippedItems.Count == 0)
        {
            data.activeItemIndex = -1;
            OnActiveItemChanged?.Invoke(new ItemData(), -1);
        }

        RefreshInventory();
        OnEquippedItemsChanged?.Invoke(equippedItems.Select(i => i.data).ToArray());
    }
Esempio n. 3
0
    public void Equip(Item item)
    {
        Debug.Log($"Equipped item: {item.gameObject.name}");
        EquipedItem = item;
        EquipedItem.transform.SetParent(_rightHand);
        EquipedItem.transform.localPosition = Vector3.zero;
        EquipedItem.transform.localRotation = Quaternion.identity;

        OnActiveItemChanged?.Invoke(item);

        /*
         * É o mesmo que:
         * if (ActiveItemChanged != null)
         * {
         *  ActiveItemChanged(EquipedItem);
         * }
         */
    }