Pedro Gomes 2e12515870 Multiple fix and updates
- Fix parentscript missing from npc's
- Reworked save/load data
- Character data, player coins, character inventory and equipped items now properly saved and loaded
2024-05-18 01:38:28 +01:00

100 lines
3.1 KiB
C#

using Photon.Pun;
using System;
using UnityEngine;
namespace Kryz.CharacterStats.Examples
{
public class EquipmentPanel : MonoBehaviour
{
[SerializeField] Transform equipmentSlotsParent;
[SerializeField] EquipmentSlot[] equipmentSlots;
[SerializeField] GameEventListener onJoinedRoom;
public UnityEvent_Item OnItemRightClickedEvent = new UnityEvent_Item();
EquipmentData equipmentData = new EquipmentData();
private void Awake()
{
onJoinedRoom.Response.AddListener(LoadEquipment);
}
private void Start()
{
for (int i = 0; i < equipmentSlots.Length; i++)
{
equipmentSlots[i].OnRightClickEvent.AddListener((X) => OnItemRightClickedEvent.Invoke(X));
}
}
private void OnValidate()
{
if (equipmentSlotsParent != null)
equipmentSlots = equipmentSlotsParent.GetComponentsInChildren<EquipmentSlot>();
}
public bool AddItem(EquippableItem item, out EquippableItem previousItem)
{
for (int i = 0; i < equipmentSlots.Length; i++)
{
if (equipmentSlots[i].EquipmentType == item.EquipmentType)
{
previousItem = (EquippableItem)equipmentSlots[i].Item;
equipmentSlots[i].Item = item;
equipmentData.equippedItems[i] = ItemIndexer.Instance.Items.IndexOf(item);
PlayerDataHandler.Instance.SaveCharacterEquipmentData(PhotonNetwork.NickName, equipmentData);
return true;
}
}
previousItem = null;
return false;
}
public bool RemoveItem(EquippableItem item)
{
for (int i = 0; i < equipmentSlots.Length; i++)
{
if (equipmentSlots[i].Item == item)
{
equipmentSlots[i].Item = null;
equipmentData.equippedItems[i] = -1;
PlayerDataHandler.Instance.SaveCharacterEquipmentData(PhotonNetwork.NickName, equipmentData);
return true;
}
}
return false;
}
public EquipmentSlot[] GetCurrentSlots()
{
return equipmentSlots;
}
public void LoadEquipment()
{
equipmentData = PlayerDataHandler.Instance.LoadCharacterEquipmentData(PhotonNetwork.NickName);
if (equipmentData != null)
{
Debug.Log("Success Loading Equipment");
for (int i = 0; i < equipmentData.equippedItems.Length; i++)
{
if (equipmentData.equippedItems[i] < 0)
{
equipmentSlots[i].Item = null;
}
else
{
equipmentSlots[i].Item = ItemIndexer.Instance.Items[equipmentData.equippedItems[i]];
}
}
}
else
equipmentData = new EquipmentData();
}
}
}