using Mirror; using System; using UnityEngine; public class The2ndScreenMessageHandler : MonoBehaviour { public static The2ndScreenMessageHandler Instance; void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } public void UnregisterHandler() { NetworkClient.UnregisterHandler(); } public void RegisterHandler() { NetworkClient.RegisterHandler(OnServerMessageReceived); } private void OnServerMessageReceived(GameMessage msg) { try { Debug.Log($"收到 Server 訊息: {msg.action} {msg.payload}"); switch (msg.action) { case "welcome": if (The2ndScreenInitSceneController.Instance) { The2ndScreenInitSceneController.Instance.OnReceivedWelcome(); } break; case "The2ndScreenServer": { if (The2ndScreenServerSceneController.Instance) { switch(msg.payload) { case "0": The2ndScreenServerSceneController.Instance.processQueueStep(0); break; case "1": The2ndScreenServerSceneController.Instance.processQueueStep(1); break; case "2": The2ndScreenServerSceneController.Instance.processQueueStep(2); break; case "3": The2ndScreenServerSceneController.Instance.processQueueStep(3); break; case "4": The2ndScreenServerSceneController.Instance.processQueueStep(4); break; case "5": The2ndScreenServerSceneController.Instance.processQueueStep(5); break; } } } break; case "The2ndScreenClient": if (The2ndScreenClientSceneController.Instance) { switch (msg.payload) { case "0": The2ndScreenClientSceneController.Instance.processQueueStep(0); break; case "1": The2ndScreenClientSceneController.Instance.processQueueStep(1); break; case "2": The2ndScreenClientSceneController.Instance.processQueueStep(2); break; case "3": The2ndScreenClientSceneController.Instance.processQueueStep(3); break; case "4": The2ndScreenClientSceneController.Instance.processQueueStep(4); break; case "5": The2ndScreenClientSceneController.Instance.processQueueStep(5); break; case "6": The2ndScreenClientSceneController.Instance.processQueueStep(6); break; } } break; } } catch (Exception e) { Debug.LogError($"解析 JSON 失敗: {e.Message}"); } } public void SendMessageToServer(string action, string message) { if (NetworkClient.isConnected) { GameMessage msg = new GameMessage { action = action, payload = message }; NetworkClient.Send(msg); Debug.Log($"發送訊息到 Server: {message}"); } else { Debug.LogError($"發送訊息到 Server 失敗: {message}"); } } }