Files
5.24BuYu/Assets/MyGame/Scripts/Net/WebSocketSendList_ChineseChess.cs
T
2026-10-06 01:14:13 +08:00

96 lines
6.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Assets.MyGame.Scripts.Net;
using Assets.MyGame.Scripts.Net.WebResponses.ChineseChess;
using Newtonsoft.Json;
public partial class WebSocketSendList
{
public static void CreateRoomChineseChess(ChineseChessGameClassList.CreateRoomParam param)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"CreateRoom\",\"invocationId\":\"1\",\"arguments\":[" + JsonConvert.SerializeObject(param) + "]}");
}
public static void GetRoomListChineseChess(int district)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"GetRoomList\",\"invocationId\":\"1\",\"arguments\":[" + district + "]}");
}
public static void SelectGlodChineseChess(string roomId, int gold, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"GoldConfig\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\"," + gold + ",\"" + userId + "\"]}");
}
public static void JoinGameChineseChess(string roomId, string pwd, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"JoinGame\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\",\"" + pwd + "\",\"" + userId + "\"]}");
}
public static void EndGameChineseChess(string roomId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"EndGame\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\",\"" + userId + "\"]}");
}
public static void GameReadyChineseChess(string roomId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"GameReady\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\",\"" + userId + "\"]}");
}
public static void ExitRoomChineseChess(string roomId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"ExitRoom\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\",\"" + userId + "\"]}");
}
public static void GameOperationChineseChess(string roomId, int operateID, string userId)
{
// ⚠ 文档定义: invoke("GameOperation", gameId, type, data),type: 1=求和 2=认输 3=悔棋,data=附加数据。
// 现有 UI 层调用第三参传的是玩家编号,operateID 还含 4/5 等 UI 扩展值——与文档的语义对齐由 UI 层对话处理,协议层保持原样。
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"GameOperation\",\"invocationId\":\"1\",\"arguments\":[\"" + roomId + "\"," + operateID + ",\"" + userId + "\"]}");
}
// ======== 新增缺失方法 ========
public static void StartGameChineseChess(string gameId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"StartGame\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}");
}
public static void RestartGameChineseChess(string gameId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"RestartGame\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}");
}
public static void RequestEndGameChineseChess(string gameId, string userId, string winUserId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"RequestEndGame\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\",\"" + winUserId + "\"]}");
}
public static void HeartbeatChineseChess(string gameId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"Heartbeat\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\"]}");
}
public static void CheckTimeoutChineseChess(string gameId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"CheckTimeout\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\"]}");
}
public static void SyncGameDataChineseChess(string gameId, string data)
{
// data 是 JSON 字符串(象棋走子帧数据),必须整体转义后再嵌入外层报文,否则引号会破坏 JSON
string escaped = data == null ? "\"\"" : JsonConvert.SerializeObject(data);
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"SyncGameData\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\"," + escaped + "]}");
}
/// <summary>玩家挂起(2.13):对局中将自己标记为挂起状态,房间内其他玩家收到 PlayerAfkNotice</summary>
public static void SetPlayerAfkChineseChess(string gameId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"SetPlayerAfk\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}");
}
/// <summary>取消挂起(2.13):房间内其他玩家收到 PlayerCancelAfkNotice,本人收到 BeginGame 恢复房间同步</summary>
public static void CancelPlayerAfkChineseChess(string gameId, string userId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"CancelPlayerAfk\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}");
}
/// <summary>房主踢人(4.5):开局前将目标玩家踢出房间,被踢者收到 KickedFromRoom</summary>
public static void KickPlayerChineseChess(string gameId, string targetUserId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"KickPlayer\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + targetUserId + "\"]}");
}
/// <summary>主动查询房间状态(4.3):服务端返回 RoomStateNotice(room) 完整快照,用于重连/断线超时后校准本地状态</summary>
public static void GetRoomStateChineseChess(string gameId)
{
WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"GetRoomState\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\"]}");
}
}