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.

146 lines
3.4 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
  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 Color playerColor;
  36. #region Unity Functions
  37. private void OnEnable()
  38. {
  39. clientManager.OnConnectedToServer += OnConnect;
  40. clientManager.OnLoginSucess += OnLogin;
  41. clientManager.OnLoginFail += OnLoginFail;
  42. }
  43. private void OnDisable()
  44. {
  45. clientManager.OnConnectedToServer -= OnConnect;
  46. clientManager.OnLoginSucess -= OnLogin;
  47. clientManager.OnLoginFail -= OnLoginFail;
  48. }
  49. private void Start()
  50. {
  51. serverAddress = PlayerPrefs.GetString("LastUsedAddress", "");
  52. serverPort = PlayerPrefs.GetInt("LastUsedPort", 2222);
  53. playerName = PlayerPrefs.GetString("LastUsedName");
  54. OnLoginFail();
  55. }
  56. #endregion Unity Functions
  57. #region Event Functions
  58. public void OnConnect()
  59. {
  60. Title.text = DetailsTitle;
  61. CloseAll();
  62. DetailsObject.SetActive(true);
  63. }
  64. public void OnLogin()
  65. {
  66. Title.text = WaitTitle;
  67. CloseAll();
  68. WaitObject.SetActive(true);
  69. }
  70. public void OnLoginFail()
  71. {
  72. Title.text = ConnectionTitle;
  73. CloseAll();
  74. ConnectionObject.SetActive(true);
  75. }
  76. #endregion Event Functions
  77. #region UI Functionality
  78. public void OnChange_ServerAddress(string serverAddress)
  79. {
  80. this.serverAddress = serverAddress;
  81. }
  82. public void OnChange_ServerPort(string serverPort)
  83. {
  84. this.serverPort = int.Parse(serverPort);
  85. }
  86. public void OnClick_Connect()
  87. {
  88. clientManager.StartClient(serverAddress, serverPort);
  89. PlayerPrefs.SetString("LastUsedAddress", serverAddress);
  90. PlayerPrefs.SetInt("LastUsedPort", serverPort);
  91. PlayerPrefs.Save();
  92. }
  93. public void OnClick_Done()
  94. {
  95. clientManager.SendPlayerDetails(playerName, playerColor);
  96. PlayerPrefs.SetString("LastUsedName", playerName);
  97. }
  98. public void OnClick_Color(Color playerColor)
  99. {
  100. this.playerColor = playerColor;
  101. }
  102. public void OnChange_Name(string playerName)
  103. {
  104. this.playerName = playerName;
  105. }
  106. public void OnClick_Ready()
  107. {
  108. UnityEngine.SceneManagement.SceneManager.LoadScene(SceneToLoad);
  109. }
  110. #endregion UI Functionality
  111. #region Helper Functions
  112. private void CloseAll()
  113. {
  114. foreach (Transform child in Content.transform)
  115. child.gameObject.SetActive(false);
  116. }
  117. #endregion Helper Functions
  118. }