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)); } } }