97 lines
2.3 KiB
C#
97 lines
2.3 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using GeometryTD.CustomEvent;
|
|
using UnityGameFramework.Runtime;
|
|
|
|
namespace GeometryTD.UI
|
|
{
|
|
public class TowerSelectItem : MonoBehaviour
|
|
{
|
|
[SerializeField] private Image _icon;
|
|
|
|
[SerializeField] private TMP_Text _price;
|
|
|
|
[SerializeField] private CommonButton _button;
|
|
|
|
private TowerSelectItemContext _context;
|
|
private Sprite _defaultIcon;
|
|
private bool _hasCachedDefaultIcon;
|
|
|
|
public void OnInit(TowerSelectItemContext context)
|
|
{
|
|
CacheDefaultIcon();
|
|
_context = context;
|
|
|
|
if (_icon != null)
|
|
{
|
|
if (context != null && context.Icon != null)
|
|
{
|
|
_icon.sprite = context.Icon;
|
|
}
|
|
else if (_defaultIcon != null)
|
|
{
|
|
_icon.sprite = _defaultIcon;
|
|
}
|
|
|
|
_icon.enabled = _icon.sprite != null;
|
|
}
|
|
|
|
if (_price != null)
|
|
{
|
|
_price.text = context?.PriceText ?? string.Empty;
|
|
}
|
|
|
|
if (_button != null)
|
|
{
|
|
_button.Interactive = context != null && context.IsInteractable;
|
|
}
|
|
}
|
|
|
|
public void OnReset()
|
|
{
|
|
_context = null;
|
|
CacheDefaultIcon();
|
|
|
|
if (_icon != null)
|
|
{
|
|
_icon.sprite = _defaultIcon;
|
|
_icon.enabled = _icon.sprite != null;
|
|
}
|
|
|
|
if (_price != null)
|
|
{
|
|
_price.text = string.Empty;
|
|
}
|
|
|
|
if (_button != null)
|
|
{
|
|
_button.Interactive = false;
|
|
}
|
|
}
|
|
|
|
public void OnClick()
|
|
{
|
|
if (_context == null || !_context.IsInteractable)
|
|
{
|
|
return;
|
|
}
|
|
|
|
GameEntry.Event.Fire(
|
|
this,
|
|
CombatSelectItemClickEventArgs.Create(_context.ActionType, _context.ActionIndex));
|
|
}
|
|
|
|
private void CacheDefaultIcon()
|
|
{
|
|
if (_hasCachedDefaultIcon || _icon == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_defaultIcon = _icon.sprite;
|
|
_hasCachedDefaultIcon = true;
|
|
}
|
|
}
|
|
}
|