- 更新了多个文件的代码结构和类型定义,提高了代码的健壮性和可维护性 - 优化了事件处理、棋子管理和移动逻辑,为后续功能扩展打下坚实基础 - 修复了一些潜在的空指针异常问题,提高了程序的稳定性 - 修复部分bug
47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using Godot;
|
||
using Godot.Collections;
|
||
|
||
namespace RPPackage {
|
||
public static class RPHelper
|
||
{
|
||
public static Dictionary SerializeRPMessage(RPMessage message)
|
||
{
|
||
return message.ToDictionary();
|
||
}
|
||
|
||
public static RPMessage? DeserializeRPMessage(Dictionary data)
|
||
{
|
||
if (!data.ContainsKey("type") || !data.ContainsKey("cmd")) {
|
||
return null;
|
||
}
|
||
return new RPMessage {
|
||
Type = (string)data["type"],
|
||
Cmd = (string)data["cmd"],
|
||
Code = data.ContainsKey("code") ? (string)data["code"] : null,
|
||
Uid = data.ContainsKey("uid") ? (string)data["uid"] : null,
|
||
Token = data.ContainsKey("token") ? (string)data["token"] : null,
|
||
Data = data.ContainsKey("data") ? data["data"].AsGodotDictionary() : null,
|
||
};
|
||
}
|
||
|
||
// 假设你有WebSocket通信的实现,这里仅展示如何使用上述方法
|
||
public static void SendRPMessage(this EventDrivenWebSocket ws, RPMessage message)
|
||
{
|
||
ws.SendJsonEx(RPHelper.SerializeRPMessage(message));
|
||
}
|
||
|
||
public static RPMessage? HandleIncomingMessage(string jsonMessage)
|
||
{
|
||
var dataDict = Json.ParseString(jsonMessage).AsGodotDictionary();
|
||
if (dataDict != null)
|
||
{
|
||
return RPHelper.DeserializeRPMessage(dataDict);
|
||
}
|
||
else
|
||
{
|
||
GD.PrintErr("Failed to parse incoming message.");
|
||
return null;
|
||
}
|
||
}
|
||
}
|
||
} |