You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
1.8 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using Networking;
using Networking.Server;
public class LobbyUIController : MonoBehaviour
{
[SerializeField]
private ConnectionHandler Clients;
[SerializeField]
private string SceneToStart;
[Header("UI Elements")]
[SerializeField]
private TextMeshProUGUI IPText;
[SerializeField]
private Transform Content;
[SerializeField]
private GameObject ClientTag;
[SerializeField]
private Color[] PlayerColors;
// 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);
}
private void OnDisable()
{
Clients.OnClientsChange -= DisplayClients;
}
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];
client.Color = PlayerColors[i % PlayerColors.Length];
GameObject clientObject = Instantiate(ClientTag, Content);
TextMeshProUGUI clientText = clientObject.GetComponent<TextMeshProUGUI>();
clientText.text = client.Name;
clientText.color = client.Color;
clientObject.SetActive(true);
}
}
public void OnClick_StartGame()
{
UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToStart);
}
}