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.

164 lines
3.8 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Networking.Client;
  5. using TMPro;
  6. public class LoginUIManager : MonoBehaviour
  7. {
  8. [Header("References")]
  9. [SerializeField]
  10. private ClientLoginManager clientManager;
  11. [SerializeField]
  12. private TextMeshProUGUI Title;
  13. [SerializeField]
  14. private GameObject Content;
  15. [Header("Connection")]
  16. [SerializeField]
  17. private string ConnectionTitle = "Connect to Server";
  18. [SerializeField]
  19. private GameObject ConnectionObject;
  20. [Header("PlayerDetails")]
  21. [SerializeField]
  22. private string DetailsTitle = "Player Details";
  23. [SerializeField]
  24. private GameObject DetailsObject;
  25. [Header("WaitForPlayers")]
  26. [SerializeField]
  27. private string WaitTitle = "Wait for Players";
  28. [SerializeField]
  29. private string SceneToLoad;
  30. [SerializeField]
  31. private GameObject WaitObject;
  32. private string serverAddress;
  33. private int serverPort;
  34. private string playerName;
  35. private string playerAnimal;
  36. private Color playerColor;
  37. #region Unity Functions
  38. private void OnEnable()
  39. {
  40. clientManager.OnConnectedToServer += OnConnect;
  41. clientManager.OnLoginSucess += OnLogin;
  42. clientManager.OnLoginFail += OnLoginFail;
  43. }
  44. private void OnDisable()
  45. {
  46. clientManager.OnConnectedToServer -= OnConnect;
  47. clientManager.OnLoginSucess -= OnLogin;
  48. clientManager.OnLoginFail -= OnLoginFail;
  49. }
  50. private void Start()
  51. {
  52. serverAddress = PlayerPrefs.GetString("LastUsedAddress", "");
  53. serverPort = PlayerPrefs.GetInt("LastUsedPort", 2222);
  54. playerName = PlayerPrefs.GetString("LastUsedName");
  55. OnLoginFail();
  56. }
  57. #endregion Unity Functions
  58. #region Event Functions
  59. public void OnConnect()
  60. {
  61. Title.text = DetailsTitle;
  62. CloseAll();
  63. DetailsObject.SetActive(true);
  64. }
  65. public void OnLogin()
  66. {
  67. Title.text = WaitTitle;
  68. CloseAll();
  69. WaitObject.SetActive(true);
  70. }
  71. public void OnLoginFail()
  72. {
  73. Title.text = ConnectionTitle;
  74. CloseAll();
  75. ConnectionObject.SetActive(true);
  76. }
  77. #endregion Event Functions
  78. #region UI Functionality
  79. public void OnChange_ServerAddress(string serverAddress)
  80. {
  81. this.serverAddress = serverAddress;
  82. }
  83. public void OnChange_ServerPort(string serverPort)
  84. {
  85. this.serverPort = int.Parse(serverPort);
  86. }
  87. public void OnClick_Connect()
  88. {
  89. clientManager.StartClient(serverAddress, serverPort);
  90. PlayerPrefs.SetString("LastUsedAddress", serverAddress);
  91. PlayerPrefs.SetInt("LastUsedPort", serverPort);
  92. PlayerPrefs.Save();
  93. }
  94. public void OnClick_Done()
  95. {
  96. clientManager.SendPlayerDetails(playerName, playerColor, playerAnimal);
  97. PlayerPrefs.SetString("LastUsedName", playerName);
  98. }
  99. public void OnClick_Color(Color playerColor)
  100. {
  101. this.playerColor = playerColor;
  102. }
  103. public void OnClick_Colour(string hex)
  104. {
  105. Color newColor = new Color();
  106. if (ColorUtility.TryParseHtmlString(hex, out newColor))
  107. this.playerColor = newColor;
  108. clientManager.SendPlayerCDetails(playerColor);
  109. }
  110. public void OnClick_Animal(string playerAnimal)
  111. {
  112. this.playerAnimal = playerAnimal;
  113. clientManager.SendPlayerADetails(playerAnimal);
  114. }
  115. public void OnChange_Name(string playerName)
  116. {
  117. this.playerName = playerName;
  118. }
  119. public void OnClick_Ready()
  120. {
  121. UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToLoad);
  122. }
  123. #endregion UI Functionality
  124. #region Helper Functions
  125. private void CloseAll()
  126. {
  127. foreach (Transform child in Content.transform)
  128. child.gameObject.SetActive(false);
  129. }
  130. #endregion Helper Functions
  131. }