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 itemPanels = new List(); [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 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(); 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 GetItemPanels() { return itemPanels; } } }