using HurricaneVR.Framework.Core.UI; using Sirenix.OdinInspector; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.UI; using Zenject; public class LobbyMenuUI : MonoBehaviour { [Title("Debug")] [Inject] [ReadOnly] private HVRInputModule uiInput; [Inject] [ReadOnly] private SceneManager sceneManager; [SerializeField] [ReadOnly] [Inject] private GameManager gameManager; [SerializeField] [ReadOnly] private Canvas canvas; [Title("Join or Host")] [SerializeField] private GameObject joinOrHost; [SerializeField] private TMP_InputField roomCodeInput; [SerializeField] private Button joinButton; [SerializeField] private Button hostButton; [Title("Connected")] [SerializeField] private GameObject connected; [SerializeField] private PlayerItemUI[] playerItems; [SerializeField] private Button leaveButton; private bool isConnected => gameManager.IsMultiplayer; private void Start() { if (uiInput == null) return; canvas = GetComponent(); uiInput?.AddCanvas(canvas); joinButton.onClick.AddListener(() => JoinClicked()); hostButton.onClick.AddListener(() => HostClicked()); leaveButton.onClick.AddListener(() => LeaveClicked()); gameManager.OnConnected.AddListener(() => UpdateUI()); gameManager.OnDisconnected.AddListener(() => UpdateUI()); UpdateUI(); } private void UpdateUI() { joinOrHost.SetActive(!isConnected); connected.SetActive(isConnected); joinButton.interactable = true; hostButton.interactable = true; } private void JoinClicked() { gameManager.JoinGame(roomCodeInput.text); joinButton.interactable = false; hostButton.interactable = false; } private void HostClicked() { gameManager.HostGame(); joinButton.interactable = false; hostButton.interactable = false; } private void LeaveClicked() { gameManager.LeaveGame(); } }