Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/UI_InventoryList.cs
2026-03-04 09:37:33 +08:00

115 lines
2.6 KiB
C#

using System.Collections.Generic;
using Lean.Pool;
using Michsky.UI.Heat;
using UFS3;
using UnityEngine;
public class UI_InventoryList : MonoBehaviour
{
public ItemType ItemType;
public ScriptableListItemData InventoryList;
public ScriptableEventItemData OnRemoveAssignItem;
[SerializeField]
private UI_InventoryButton InventoryButtonTemplate;
[SerializeField]
private ButtonManager noItemButton;
[SerializeField]
private PanelManager mainContent;
private List<UI_InventoryButton> _ButtonInstances;
public RectTransform buttonParent;
private void OnEnable()
{
Refresh();
InventoryList.OnItemCountChanged += InventoryList_OnItemCountChanged;
}
private void InventoryList_OnItemCountChanged()
{
Clear();
Refresh();
}
public void OnNoItemButtonClick()
{
if (!(mainContent == null))
{
int index = mainContent.panels.FindIndex((PanelManager.PanelItem element) => element.panelName == "Shop");
PanelManager componentInChildren = mainContent.panels[index].panelObject.GetComponentInChildren<PanelManager>();
mainContent.OpenPanel("Shop");
switch (ItemType)
{
case ItemType.Rod:
componentInChildren.OpenPanel("Rods");
break;
case ItemType.Reel:
componentInChildren.OpenPanel("Reels");
break;
case ItemType.Line:
componentInChildren.OpenPanel("Lines");
break;
case ItemType.Bobber:
componentInChildren.OpenPanel("Bobbers");
break;
case ItemType.Hook:
componentInChildren.OpenPanel("Hooks");
break;
case ItemType.Lure:
componentInChildren.OpenPanel("Lures");
break;
case ItemType.Bait:
componentInChildren.OpenPanel("Baits");
break;
}
}
}
private void OnRemoveAssignItemOnOnRaised(BaseItemData obj)
{
Clear();
Refresh();
}
private void OnDisable()
{
Clear();
InventoryList.OnItemCountChanged -= InventoryList_OnItemCountChanged;
}
private void Refresh()
{
_ButtonInstances = new List<UI_InventoryButton>();
foreach (BaseItemData inventory in InventoryList)
{
ItemType itemType = ((IItemType)inventory).ItemType;
if (itemType == ItemType)
{
UI_InventoryButton uI_InventoryButton = LeanPool.Spawn(InventoryButtonTemplate, buttonParent);
uI_InventoryButton.Initialize(inventory, itemType);
_ButtonInstances.Add(uI_InventoryButton);
uI_InventoryButton.gameObject.SetActive(value: true);
}
}
noItemButton.gameObject.SetActive(_ButtonInstances.Count == 0);
}
private void Clear()
{
foreach (UI_InventoryButton buttonInstance in _ButtonInstances)
{
if (buttonInstance != null)
{
LeanPool.Despawn(buttonInstance);
}
}
_ButtonInstances.Clear();
}
}