using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Networking.Client;
|
|
using TMPro;
|
|
|
|
public class LoginUIManager : MonoBehaviour
|
|
{
|
|
public int conn;
|
|
int maxPlayers = 8;
|
|
public ConnectedClients clients;
|
|
[Header("References")]
|
|
[SerializeField]
|
|
private ClientLoginManager clientManager;
|
|
[SerializeField]
|
|
private TextMeshProUGUI Title;
|
|
[SerializeField]
|
|
private GameObject Content;
|
|
|
|
[Header("Connection")]
|
|
[SerializeField]
|
|
private string ConnectionTitle = "Connect to Server";
|
|
[SerializeField]
|
|
private GameObject ConnectionObject;
|
|
|
|
[Header("PlayerDetails")]
|
|
[SerializeField]
|
|
private string DetailsTitle = "Player Details";
|
|
[SerializeField]
|
|
private GameObject DetailsObject;
|
|
|
|
[Header("WaitForPlayers")]
|
|
[SerializeField]
|
|
private string WaitTitle = "Wait for Players";
|
|
[SerializeField]
|
|
private string SceneToLoad;
|
|
[SerializeField]
|
|
private GameObject WaitObject;
|
|
|
|
[Header("TooManyPlayerDetails")]
|
|
[SerializeField]
|
|
private GameObject tooManyObject;
|
|
|
|
private string serverAddress;
|
|
private int serverPort;
|
|
private string playerName;
|
|
private string playerAnimal;
|
|
private Color playerColor;
|
|
|
|
bool animalSelected = false;
|
|
bool colorSelected = false;
|
|
|
|
#region Unity Functions
|
|
private void Update()
|
|
{
|
|
conn = GetComponent<animalSelection>().count;
|
|
clients = GetComponent<animalSelection>().Clients;
|
|
foreach (ClientData cli in clients.AllClients)
|
|
{
|
|
if (playerAnimal == cli.characterAnimal)
|
|
{
|
|
playerAnimal = null;
|
|
animalSelected = false;
|
|
}
|
|
}
|
|
}
|
|
private void OnEnable()
|
|
{
|
|
clientManager.OnConnectedToServer += OnConnect;
|
|
clientManager.OnLoginSucess += OnLogin;
|
|
clientManager.OnLoginFail += OnLoginFail;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
clientManager.OnConnectedToServer -= OnConnect;
|
|
clientManager.OnLoginSucess -= OnLogin;
|
|
clientManager.OnLoginFail -= OnLoginFail;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
serverAddress = PlayerPrefs.GetString("LastUsedAddress", "");
|
|
serverPort = PlayerPrefs.GetInt("LastUsedPort", 2222);
|
|
playerName = PlayerPrefs.GetString("LastUsedName");
|
|
|
|
OnLoginFail();
|
|
}
|
|
|
|
#endregion Unity Functions
|
|
|
|
|
|
#region Event Functions
|
|
IEnumerator DisplayTooManyCoroutine()
|
|
{
|
|
tooManyObject.SetActive(true);
|
|
yield return new WaitForSeconds(5.0f);
|
|
tooManyObject.SetActive(false);
|
|
}
|
|
|
|
public void OnConnect()
|
|
{
|
|
Title.text = DetailsTitle;
|
|
CloseAll();
|
|
DetailsObject.SetActive(true);
|
|
}
|
|
|
|
public void OnLogin()
|
|
{
|
|
Title.text = WaitTitle;
|
|
CloseAll();
|
|
WaitObject.SetActive(true);
|
|
}
|
|
|
|
public void OnLoginFail2Many()
|
|
{
|
|
Title.text = ConnectionTitle;
|
|
CloseAll();
|
|
StartCoroutine(DisplayTooManyCoroutine());
|
|
ConnectionObject.SetActive(true);
|
|
}
|
|
|
|
public void OnLoginFail()
|
|
{
|
|
Title.text = ConnectionTitle;
|
|
Debug.Log("Failure");
|
|
CloseAll();
|
|
ConnectionObject.SetActive(true);
|
|
}
|
|
#endregion Event Functions
|
|
|
|
#region UI Functionality
|
|
public void OnChange_ServerAddress(string serverAddress)
|
|
{
|
|
this.serverAddress = serverAddress;
|
|
}
|
|
|
|
public void OnChange_ServerPort(string serverPort)
|
|
{
|
|
this.serverPort = int.Parse(serverPort);
|
|
}
|
|
|
|
public void OnClick_Back()
|
|
{
|
|
UnityEngine.SceneManagement.SceneManager.LoadScene("MainMenu Client");
|
|
}
|
|
|
|
public void OnClick_Connect()
|
|
{
|
|
clientManager.StartClient(serverAddress, serverPort);
|
|
PlayerPrefs.SetString("LastUsedAddress", serverAddress);
|
|
PlayerPrefs.SetInt("LastUsedPort", serverPort);
|
|
PlayerPrefs.Save();
|
|
}
|
|
|
|
public void OnClick_Done()
|
|
{
|
|
if(conn < maxPlayers)
|
|
{
|
|
if (colorSelected == true && animalSelected == true && playerName != "")
|
|
{
|
|
|
|
clientManager.SendPlayerDetails(playerName, playerColor, playerAnimal);
|
|
PlayerPrefs.SetString("LastUsedName", playerName);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
OnLoginFail2Many();
|
|
}
|
|
}
|
|
|
|
public void OnClick_Animal(string playerAnimal)
|
|
{
|
|
this.playerAnimal = playerAnimal;
|
|
animalSelected = true;
|
|
getPlayerColour(playerAnimal);
|
|
clientManager.SendPlayerADetails(playerAnimal);
|
|
}
|
|
|
|
public void OnChange_Name(string playerName)
|
|
{
|
|
this.playerName = playerName;
|
|
}
|
|
|
|
public void OnClick_Ready()
|
|
{
|
|
UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToLoad);
|
|
}
|
|
|
|
public void getPlayerColour(string playerAnimal)
|
|
{
|
|
Color newColor = new Color();
|
|
string hex = "#000000";
|
|
switch (playerAnimal)
|
|
{
|
|
case "Bear":
|
|
//red
|
|
hex = "#FF0000";
|
|
break;
|
|
case "Cat":
|
|
//sky blue
|
|
hex = "#008BFF";
|
|
break;
|
|
case "Cow":
|
|
//yellow
|
|
hex = "#FFFF00";
|
|
break;
|
|
case "Deer":
|
|
//purpe/pink
|
|
hex = "#B200FF";
|
|
break;
|
|
case "Dog":
|
|
//purple
|
|
hex = "#6700FF";
|
|
break;
|
|
case "Fox":
|
|
//orange
|
|
hex = "#FF7B00";
|
|
break;
|
|
case "Goat":
|
|
//cyan
|
|
hex = "#00FFFF";
|
|
break;
|
|
case "Horse":
|
|
//dark blue
|
|
hex = "#0000FF";
|
|
break;
|
|
case "Lion":
|
|
//lime
|
|
hex = "#00FF00";
|
|
break;
|
|
case "Lizard":
|
|
//light green
|
|
hex = "#7AFF00";
|
|
break;
|
|
case "Panda":
|
|
//salmon
|
|
hex = "#FF7A82";
|
|
break;
|
|
case "Pig":
|
|
//pink
|
|
hex = "#FF00DA";
|
|
break;
|
|
case "Sheep":
|
|
//maroon
|
|
hex = "#800000";
|
|
break;
|
|
case "Turtle":
|
|
//dark green
|
|
hex = "#008000";
|
|
break;
|
|
case "Wolf":
|
|
//grey
|
|
hex = "#808080";
|
|
break;
|
|
case "Zebra":
|
|
//black
|
|
hex = "#000000";
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
}
|
|
if (ColorUtility.TryParseHtmlString(hex, out newColor))
|
|
{
|
|
this.playerColor = newColor;
|
|
colorSelected = true;
|
|
}
|
|
}
|
|
#endregion UI Functionality
|
|
|
|
#region Helper Functions
|
|
|
|
private void CloseAll()
|
|
{
|
|
foreach (Transform child in Content.transform)
|
|
child.gameObject.SetActive(false);
|
|
}
|
|
|
|
#endregion Helper Functions
|
|
|
|
}
|