geometry-tower-defense/Assets/GameMain/Scripts/UI/Game/View/CombineSlotItem.cs

82 lines
1.8 KiB
C#

using GeometryTD.CustomEvent;
using GeometryTD.Definition;
using TMPro;
using UnityEngine;
namespace GeometryTD.UI
{
public class CombineSlotItem : MonoBehaviour
{
[SerializeField] private TowerCompSlotType _acceptSlotType = TowerCompSlotType.None;
[SerializeField] private TMP_Text _titleText;
[SerializeField] private CommonButton _button;
private string _defaultTitle = string.Empty;
private long _boundItemId;
private int _slotIndex = -1;
public TowerCompSlotType AcceptSlotType => _acceptSlotType;
public bool HasItem => _boundItemId > 0;
public int SlotIndex => _slotIndex;
public long BoundItemId => _boundItemId;
private void Awake()
{
if (_titleText != null)
{
_defaultTitle = _titleText.text;
}
}
public void OnInit(int slotIndex)
{
_slotIndex = slotIndex;
ClearSlot();
}
public void BindItem(RepoItemContext itemContext)
{
_boundItemId = itemContext?.InstanceId ?? 0;
_button.Interactive = true;
if (_titleText != null)
{
_titleText.text = itemContext?.Title ?? string.Empty;
}
}
public void ClearSlot()
{
_boundItemId = 0;
_button.Interactive = false;
if (_titleText != null)
{
_titleText.text = _defaultTitle;
}
}
public void OnReset()
{
_slotIndex = -1;
ClearSlot();
}
public void OnClick()
{
if (_slotIndex < 0)
{
return;
}
GameEntry.Event.Fire(this, CombineSlotClickedEventArgs.Create(_slotIndex));
}
}
}