using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class ChatroomMenuEntry : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { private Button optionsButton; private static ChatroomMenuEntry activeEntry; public void Init(Button optionsButtonArg) { optionsButton = optionsButtonArg; var color = BazookaManager.Instance.GetColorSettingMenuBackground(); gameObject.GetComponent().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 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(); gameObject.GetComponent().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(); gameObject.GetComponent().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 255f); optionsButton.gameObject.SetActive(false); if (activeEntry == this) activeEntry = null; } }