using System; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Cryville.Crtr.Browsing.UI { [RequireComponent(typeof(BrowserTabLayout))] [RequireComponent(typeof(CanvasGroup))] internal class BrowserTab : MonoBehaviour, IPointerClickHandler { [SerializeField] Image m_icon; [SerializeField] TextMeshProUGUI m_text; [SerializeField] float m_deselectedAlpha = 0.6f; public event Action Clicked; public Sprite Icon { get { return m_icon.sprite; } set { m_icon.sprite = value; } } public string Text { get { return m_text.text; } set { m_text.text = value; } } bool m_selected; public bool Selected { get { return m_selected; } set { if (m_selected == value) return; m_selected = value; UpdateSelected(); } } void UpdateSelected() { _group.alpha = Selected ? 1 : m_deselectedAlpha; _layout.Selected = Selected; } CanvasGroup _group; BrowserTabLayout _layout; void Awake() { _group = GetComponent(); _layout = GetComponent(); UpdateSelected(); } public void OnPointerClick(PointerEventData eventData) { Clicked?.Invoke(this); } } }