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.
 
 
 
 
 
 

101 lines
2.9 KiB

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 = "Enter '" + Networking.Utility.GetIP(Networking.Utility.ADDRESSFAM.IPv4) + "' into browser";
}
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 <= 8){
UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToStart);
}
#endif
}
public void RecieveStartMsg(UnityEngine.Networking.NetworkMessage msg)
{
OnClick_StartGame();
}
}