|
|
- 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<ClientData> 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<TextMeshProUGUI>();
- clientText.text = client.Name + " the " + client.characterAnimal;
- clientText.color = client.Color;
-
- Material materialInstance = clientText.fontMaterial;
- materialInstance.EnableKeyword(ShaderUtilities.Keyword_Underlay);
- materialInstance.SetColor("_UnderlayColor", new Color(0.2264151f, 0.2264151f, 0.2264151f, 1));
- materialInstance.SetFloat("_UnderlayOffsetX", 0.5f);
- materialInstance.SetFloat("_UnderlayOffsetY", -0.5f);
-
- 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();
- }
- }
|