Files
source/Assets/Scripts/ChatroomMenuEntry.cs
2025-09-07 10:34:01 -07:00

89 lines
2.6 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ChatroomMenuEntry : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
{
private Image bgImg;
private Button optionsButton;
private static ChatroomMenuEntry activeEntry;
public void Init(Image bgImgArg, Button optionsButtonArg)
{
bgImg = bgImgArg;
optionsButton = optionsButtonArg;
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
bgImg.color = new Color((((float)color[0]) + 26f) / 255f, (((float)color[1]) + 26f) / 255f, (((float)color[2]) + 26f) / 255f);
optionsButton.gameObject.SetActive(false);
}
public void OnPointerEnter(PointerEventData e)
{
if (!Application.isMobilePlatform)
{
if (activeEntry != null && activeEntry != this)
{
activeEntry.Deactivate();
}
if (activeEntry != this)
{
Activate();
}
}
}
public void OnPointerExit(PointerEventData e)
{
if (!Application.isMobilePlatform)
{
if (activeEntry != null && activeEntry != this)
{
activeEntry.Deactivate();
}
if (activeEntry == this)
{
Deactivate();
}
}
}
public void OnPointerClick(PointerEventData e)
{
if (Application.isMobilePlatform)
{
if (activeEntry != null && activeEntry != this)
{
activeEntry.Deactivate();
}
if (activeEntry == this)
{
Deactivate();
}
else
{
Activate();
}
}
else if (e.button == PointerEventData.InputButton.Right)
{
optionsButton.onClick?.Invoke();
}
}
private void Activate()
{
activeEntry = this;
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
bgImg.color = new Color((((float)color[0]) + 36f) / 255f, (((float)color[1]) + 36f) / 255f, (((float)color[2]) + 36f) / 255f);
optionsButton.gameObject.SetActive(true);
}
private void Deactivate()
{
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
bgImg.color = new Color((((float)color[0]) + 26f) / 255f, (((float)color[1]) + 26f) / 255f, (((float)color[2]) + 26f) / 255f);
optionsButton.gameObject.SetActive(false);
if (activeEntry == this) activeEntry = null;
}
}