using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using Networking; using Networking.Server; public class LobbyUIController : MonoBehaviour { [SerializeField] private ClientList Clients; [SerializeField] private string SceneToStart; [Header("UI Elements")] [SerializeField] private TextMeshProUGUI IPText; [SerializeField] private Transform Content; [SerializeField] private GameObject ClientTag; [SerializeField] private ServerObject Server; // Start is called before the first frame update void Start() { IPText.text = "Lobby - " + Networking.Utility.GetIP(Networking.Utility.ADDRESSFAM.IPv4); } private void OnEnable() { Clients.OnClientsChange += DisplayClients; DisplayClients(Clients.ConnectedClients); if (Server.server != null) Server.RegisterHandler(LoginProtocols.StartGame, RecieveStartMsg); else Debug.LogWarning("Server not started yet"); } private void OnDisable() { Clients.OnClientsChange -= DisplayClients; if (Server.server != null) Server.UnregisterHandler(LoginProtocols.StartGame); } private void DisplayClients(List data) { //Debug.Log("Updating Connected Clients"); foreach (Transform child in Content) if (child.gameObject != ClientTag) Destroy(child.gameObject); for (int i = 0; i < Clients.ConnectedClients.Count; i++) { ClientData client = Clients.ConnectedClients[i]; GameObject clientObject = Instantiate(ClientTag, Content); TextMeshProUGUI clientText = clientObject.GetComponent(); clientText.text = client.Name + " the " + client.characterAnimal; clientText.color = client.Color; clientObject.SetActive(true); } } public void OnClick_Back() { UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu Server"); } public void OnClick_StartGame() { #if UNITY_EDITOR UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToStart); #else if (Clients.ConnectedClients.Count >= 2 && Clients.ConnectedClients.Count <= 4){ UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToStart); } #endif } public void RecieveStartMsg(UnityEngine.Networking.NetworkMessage msg) { OnClick_StartGame(); } }