Neg_Utils/NEG/UI/UnityUi/Buttons/BaseButton.cs

60 lines
1.7 KiB
C#

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<ButtonSerializeFields>();
serializeFields.Button.onClick.AddListener(OnClicked);
OnDeselect(null);
}
protected virtual void OnClicked()
{
OnDeselect(null);
isHovered = false;
OnButtonPressed?.Invoke();
}
}
}