Files
beyond/Assets/Scripts/UI/ButtonWeaponBindController.cs
2024-11-20 15:21:28 +01:00

87 lines
2.6 KiB
C#

using DanielLochner.Assets.SimpleScrollSnap;
using Invector.vItemManager;
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Beyond
{
public class ButtonWeaponBindController : MonoBehaviour, IButtonItemBindController
{
[SerializeField]
private SimpleScrollSnap scrollSnap;
[SerializeField]
private List<ItemPanelController> itemPanels = new List<ItemPanelController>();
[SerializeField]
private bEquipArea equipArea;
private void OnDestroy()
{
RemoveListeners();
}
private void RemoveListeners()
{
if (!equipArea)
{
return;
}
for (int i = 0; i < equipArea.equipSlots.Count; i++)
{
bEquipSlot equipSlot = equipArea.equipSlots[i];
List<ItemPanelController> itemPanelControllers = GetItemPanels();
ItemPanelController spellPanel = itemPanelControllers[i];
equipSlot.onAddItem.RemoveListener(spellPanel.SetPanelToItemImage);
equipSlot.onRemoveItem.RemoveListener(spellPanel.SetPanelToDefaultImage);
}
}
public void BindPanelToItemSlot(int index)
{
GameObject weaponPanelObject = scrollSnap.Panels[index];
weaponPanelObject.SetActive(true);
ItemPanelController weaponPanel = weaponPanelObject.GetComponent<ItemPanelController>();
itemPanels.Add(weaponPanel);
bEquipSlot equipSlot = equipArea.equipSlots[index];
equipSlot.onAddItem.AddListener(weaponPanel.SetPanelToItemImage);
if (equipArea.equipSlots[index].item)
{
weaponPanel.SetPanelToItemImage(equipArea.equipSlots[index].item);
}
equipSlot.onRemoveItem.AddListener(weaponPanel.SetPanelToDefaultImage);
}
public ItemPanelController GetCurrentItemPanel()
{
return itemPanels[scrollSnap.CurrentPanel];
}
public int GetEquipSlotsCount()
{
return equipArea.equipSlots.Count;
}
public bEquipArea getEquipArea()
{
return equipArea;
}
public void SetEquipSlot()
{
equipArea.SetEquipSlot(scrollSnap.CurrentPanel);
}
public bEquipArea GetEquipArea()
{
return equipArea;
}
public List<ItemPanelController> GetItemPanels()
{
return itemPanels;
}
}
}