/**<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); }
/**<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()); }
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); * } */ }