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();
|
|
}
|
|
}
|