126 lines
4.5 KiB
C#
126 lines
4.5 KiB
C#
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<GameMessage>();
|
|
}
|
|
public void RegisterHandler()
|
|
{
|
|
NetworkClient.RegisterHandler<GameMessage>(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}");
|
|
}
|
|
}
|
|
}
|