using FMOD.Studio; using FMODUnity; using System; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace NEG.UI.UnityUi.Buttons { [RequireComponent(typeof(ButtonSerializeFields))] public class BaseButton : MonoBehaviour, ISelectHandler, IDeselectHandler, IPointerEnterHandler, IPointerExitHandler { public event Action OnButtonPressed; protected ButtonSerializeFields serializeFields; private bool isHovered; public virtual void OnSelect(BaseEventData eventData) { if (serializeFields.Text) serializeFields.Text.color = serializeFields.SelectedTextColor; } public void OnDeselect(BaseEventData eventData) { if (serializeFields.Text) serializeFields.Text.color = serializeFields.DeselectedTextColor; } public void OnPointerEnter(PointerEventData eventData) { isHovered = true; if (serializeFields.Text) serializeFields.Text.color = serializeFields.SelectedTextColor; } public void OnPointerExit(PointerEventData eventData) { isHovered = false; if (serializeFields.Text) serializeFields.Text.color = serializeFields.DeselectedTextColor; } protected virtual void Awake() { serializeFields = GetComponent(); serializeFields.Button.onClick.AddListener(OnClicked); OnDeselect(null); } protected virtual void OnClicked() { OnDeselect(null); isHovered = false; OnButtonPressed?.Invoke(); } } }