using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using Mirror; using System.Collections; using TMPro; public class ClientHomeWaittingSceneController : MonoBehaviour { public static ClientHomeWaittingSceneController Instance; [Header("UI じン")] public TMP_Text statusText; private bool isConnecting = false; private bool welcomeReceived = false; void Awake() { Instance = this; } void Start() { SetupScene(); StartCoroutine(ConnectToServer()); } void SetupScene() { if (ClientGlobalMenuManager.Instance != null) { ClientGlobalMenuManager.Instance.menuButton.SetActive(true); } if (statusText != null) { statusText.text = "单羬"; } } IEnumerator ConnectToServer() { isConnecting = true; if (statusText != null) { statusText.text = "单羬."; } // 砞竚 NetworkManager if (ClientNetworkManager.Instance != null) { //ClientNetworkManager.Instance.StopClient(); ClientNetworkManager.Instance.networkAddress = ClientInitSceneController.ServerAddr; // ㄏノ Telepathy (TCP) Transport TelepathyTransport transport = ClientNetworkManager.Instance.GetComponent(); if (transport != null) { transport.port = ClientInitSceneController.ServerPort; } // 秨﹍硈絬 ClientNetworkManager.Instance.StartClient(); Debug.Log($"秨﹍硈絬 {ClientInitSceneController.ServerAddr}:{ClientInitSceneController.ServerPort}"); } // 单硈絬 float timeout = 3f; float elapsed = 0f; while (!NetworkClient.isConnected && elapsed < timeout) { elapsed += Time.deltaTime; yield return null; } if (NetworkClient.isConnected) { Debug.Log("硈絬Θ单 Welcome 癟..."); if (statusText != null) { statusText.text = "单羬.."; } // send welcome if (ClientMessageHandler.Instance != null) { ClientMessageHandler.Instance.RegisterHandler(); ClientMessageHandler.Instance.SendMessageToServer("welcome", "hello"); } // 单 Welcome 癟 yield return StartCoroutine(WaitForWelcomeMessage()); } else { Debug.LogError("硈絬ア毖"); if (statusText != null) { statusText.text = "单羬...!"; } isConnecting = false; yield return StartCoroutine(ConnectToServer()); } } IEnumerator WaitForWelcomeMessage() { float timeout = 3f; float elapsed = 0f; while (!welcomeReceived && elapsed < timeout) { elapsed += Time.deltaTime; yield return null; } if (!welcomeReceived) { Debug.LogError("ゼΜ Welcome 癟"); if (statusText != null) { statusText.text = "单羬...!!"; } isConnecting = false; yield return StartCoroutine(ConnectToServer()); } } public void OnWelcomeMessageReceived() { welcomeReceived = true; Debug.Log("Welcome 癟喷靡非称铬锣初春"); if (statusText != null) { statusText.text = "单羬..."; } StartCoroutine(LoadIntroScene()); } IEnumerator LoadIntroScene() { yield return new WaitForSeconds(0f); SceneManager.LoadScene("ClientIntroScene"); } }