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.

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