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 + "]}"); } /// 玩家挂起(2.13):对局中将自己标记为挂起状态,房间内其他玩家收到 PlayerAfkNotice public static void SetPlayerAfkChineseChess(string gameId, string userId) { WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"SetPlayerAfk\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}"); } /// 取消挂起(2.13):房间内其他玩家收到 PlayerCancelAfkNotice,本人收到 BeginGame 恢复房间同步 public static void CancelPlayerAfkChineseChess(string gameId, string userId) { WebSocketManager.Instance.Send(SocketType.chess, "{\"type\":1,\"target\":\"CancelPlayerAfk\",\"invocationId\":\"1\",\"arguments\":[\"" + gameId + "\",\"" + userId + "\"]}"); } }