using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Networking.Client;
|
|
using TMPro;
|
|
|
|
public class LoginUIManager : MonoBehaviour
|
|
{
|
|
[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;
|
|
|
|
|
|
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 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
|
|
public void OnConnect()
|
|
{
|
|
Title.text = DetailsTitle;
|
|
|
|
CloseAll();
|
|
DetailsObject.SetActive(true);
|
|
}
|
|
|
|
public void OnLogin()
|
|
{
|
|
Title.text = WaitTitle;
|
|
CloseAll();
|
|
WaitObject.SetActive(true);
|
|
}
|
|
|
|
public void OnLoginFail()
|
|
{
|
|
Title.text = ConnectionTitle;
|
|
|
|
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(colorSelected == true && animalSelected == true && playerName != ""){
|
|
clientManager.SendPlayerDetails(playerName, playerColor, playerAnimal);
|
|
PlayerPrefs.SetString("LastUsedName", playerName);
|
|
}
|
|
}
|
|
|
|
public void OnClick_Color(Color playerColor)
|
|
{
|
|
this.playerColor = playerColor;
|
|
}
|
|
|
|
public void OnClick_Colour(string hex)
|
|
{
|
|
Color newColor = new Color();
|
|
if (ColorUtility.TryParseHtmlString(hex, out newColor)){
|
|
this.playerColor = newColor;
|
|
colorSelected = true;
|
|
}
|
|
|
|
clientManager.SendPlayerCDetails(playerColor);
|
|
}
|
|
|
|
public void OnClick_Animal(string playerAnimal)
|
|
{
|
|
this.playerAnimal = playerAnimal;
|
|
animalSelected = true;
|
|
clientManager.SendPlayerADetails(playerAnimal);
|
|
}
|
|
|
|
public void OnChange_Name(string playerName)
|
|
{
|
|
this.playerName = playerName;
|
|
}
|
|
|
|
public void OnClick_Ready()
|
|
{
|
|
UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToLoad);
|
|
}
|
|
#endregion UI Functionality
|
|
|
|
#region Helper Functions
|
|
|
|
private void CloseAll()
|
|
{
|
|
foreach (Transform child in Content.transform)
|
|
child.gameObject.SetActive(false);
|
|
}
|
|
|
|
#endregion Helper Functions
|
|
|
|
}
|