equipment is persistent on scene change, and stats stay updated. still missing item persistence through sessions.
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace Kryz.CharacterStats.Examples
|
|
{
|
|
public class EquipmentPanel : MonoBehaviour
|
|
{
|
|
[SerializeField] Transform equipmentSlotsParent;
|
|
[SerializeField] EquipmentSlot[] equipmentSlots;
|
|
|
|
public UnityEvent_Item OnItemRightClickedEvent = new UnityEvent_Item();
|
|
|
|
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;
|
|
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;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public EquipmentSlot[] GetCurrentSlots()
|
|
{
|
|
return equipmentSlots;
|
|
}
|
|
}
|
|
}
|