51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
|
|
namespace BlueWater.Uis
|
|
{
|
|
public class ManualCocktailButton : MonoBehaviour, ISelectHandler, IDeselectHandler
|
|
{
|
|
[field: SerializeField]
|
|
public Button Button { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public Image Image { get; private set; }
|
|
|
|
[field: SerializeField]
|
|
public Image SelectedImage { get; private set; }
|
|
|
|
private Action<ManualCocktailButton> _onSelectedAction;
|
|
|
|
private void Start()
|
|
{
|
|
if (EventSystem.current.currentSelectedGameObject == gameObject) return;
|
|
|
|
SelectedImage.enabled = false;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_onSelectedAction = null;
|
|
}
|
|
|
|
public void OnSelect(BaseEventData eventData)
|
|
{
|
|
SelectedImage.enabled = true;
|
|
_onSelectedAction?.Invoke(this);
|
|
}
|
|
|
|
public void OnDeselect(BaseEventData eventData)
|
|
{
|
|
SelectedImage.enabled = false;
|
|
}
|
|
|
|
public void SetImage(Sprite sprite) => Image.sprite = sprite;
|
|
|
|
public void AddSelectedAction(Action<ManualCocktailButton> selectedAction)
|
|
{
|
|
_onSelectedAction += selectedAction;
|
|
}
|
|
}
|
|
} |