98 lines
3.0 KiB
C#
98 lines
3.0 KiB
C#
using UnityEngine;
|
||
using Mirror;
|
||
using System;
|
||
|
||
|
||
public class ClientMessageHandler : MonoBehaviour
|
||
{
|
||
public static ClientMessageHandler Instance;
|
||
|
||
void Awake()
|
||
{
|
||
if (Instance == null)
|
||
{
|
||
Instance = this;
|
||
DontDestroyOnLoad(gameObject);
|
||
}
|
||
else
|
||
{
|
||
Destroy(gameObject);
|
||
}
|
||
}
|
||
|
||
public void RegisterHandler()
|
||
{
|
||
NetworkClient.RegisterHandler<GameMessage>(OnServerMessageReceived);
|
||
}
|
||
public void UnregisterHandler()
|
||
{
|
||
NetworkClient.UnregisterHandler<GameMessage>();
|
||
}
|
||
|
||
void OnServerMessageReceived(GameMessage msg)
|
||
{
|
||
Debug.Log($"¦¬¨ì Server °T®§: {msg.payload}");
|
||
|
||
try
|
||
{
|
||
switch (msg.action)
|
||
{
|
||
case "welcome":
|
||
{
|
||
switch(msg.payload)
|
||
{
|
||
case "hello":
|
||
Debug.Log("Welcome °T®§ÅçÃÒ¦¨¥\");
|
||
|
||
// clean data
|
||
ClientWorkMessageHandleSceneController.cleanData();
|
||
ClientWorkMessageHandleSceneController.messageResultCount = 0;
|
||
|
||
if (ClientHomeWaittingSceneController.Instance != null)
|
||
{
|
||
ClientHomeWaittingSceneController.Instance.OnWelcomeMessageReceived();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
case "workMessageResult":
|
||
{
|
||
if (ClientWorkMessageHandleSceneController.Instance != null)
|
||
{
|
||
GameMessageWorkResult resultObj = JsonUtility.FromJson<GameMessageWorkResult>(msg.payload);
|
||
ClientWorkMessageHandleSceneController.messageResultCount = resultObj.count;
|
||
if (resultObj != null)
|
||
{
|
||
ClientWorkMessageHandleSceneController.Instance.onReceiveResult(resultObj.result, resultObj.resultText);
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("workMessaggeResult failed");
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
Debug.LogError($"¸ÑªR 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($"µo°e°T®§¨ì Server: {message}");
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError($"µo°e°T®§¨ì Server ¥¢±Ñ: {message}");
|
||
}
|
||
}
|
||
}
|