1
This commit is contained in:
@@ -90,9 +90,17 @@ namespace Assets.MyGame.Scripts.Net
|
||||
case "BeginGame":
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<ChessGameRoom>>(msg.ToString()).arguments[0];
|
||||
roomMainPanel.subUIManager.CloseAll();
|
||||
roomMainPanel.StartGame(msg);
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
if (roomMainPanel != null && roomMainPanel.IsChessGameActive && va.state == 2)
|
||||
{
|
||||
// 对局中收到 BeginGame = 断线重连/取消挂起的房间同步:只刷新玩家数据,不重置对局
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
}
|
||||
else
|
||||
{
|
||||
roomMainPanel.subUIManager.CloseAll();
|
||||
roomMainPanel.StartGame(msg);
|
||||
roomMainPanel.UpdateUserData(va);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -174,6 +182,12 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQDefeated);
|
||||
}
|
||||
// 服务端已结算:本地对局同步置结束 + 停表(防后台方回前台后对局还在跑)
|
||||
if (roomMainPanel != null)
|
||||
{
|
||||
roomMainPanel.StopWaitCountdown();
|
||||
roomMainPanel.MarkChessGameOverByServer();
|
||||
}
|
||||
// 结算后按结果实时更新房间双方金币显示
|
||||
roomMainPanel.ApplySettlementGold(va);
|
||||
}
|
||||
@@ -222,7 +236,16 @@ namespace Assets.MyGame.Scripts.Net
|
||||
}
|
||||
break;
|
||||
case "Disconnect":
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQWin);
|
||||
{
|
||||
// 对方断线 { userId, disconnectTime, timeoutSeconds }:只提示等待重连,
|
||||
// 服务端超时未重连会自动判负推 GameEnd(心跳里的 CheckTimeout 也会触发检查)
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
string disUserId = va["userId"]?.ToString();
|
||||
int disTimeout = 60;
|
||||
if (va.ContainsKey("timeoutSeconds") && va["timeoutSeconds"] != null)
|
||||
int.TryParse(va["timeoutSeconds"].ToString(), out disTimeout);
|
||||
if (roomMainPanel != null) roomMainPanel.OnOpponentDisconnected(disUserId, disTimeout);
|
||||
}
|
||||
break;
|
||||
case "GameError":
|
||||
{
|
||||
@@ -251,6 +274,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
{
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<Dictionary<string, object>>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 重连: userId={va["userId"]}, userName={va["userName"]}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnOpponentReconnected(va["userId"]?.ToString());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -272,6 +296,8 @@ namespace Assets.MyGame.Scripts.Net
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQWin);
|
||||
else
|
||||
roomMainPanel.subUIManager.ShowAsync(UIPanel.ZGXQDefeated);
|
||||
// 服务端已结算:本地对局同步置结束(防后台方回前台后对局还在跑)
|
||||
if (roomMainPanel != null) roomMainPanel.MarkChessGameOverByServer();
|
||||
// 结算后按结果实时更新房间双方金币显示
|
||||
roomMainPanel.ApplySettlementGold(winUserId);
|
||||
}
|
||||
@@ -316,9 +342,9 @@ namespace Assets.MyGame.Scripts.Net
|
||||
case "PlayerAfkNotice":
|
||||
{
|
||||
// 玩家挂起通知 { userId }(房间组推送;挂起仅表现提示,不影响服务端操作校验)
|
||||
// 表现层(座位挂起标记)由 UI 对话接入
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 玩家挂起: userId={va?.userId}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnPlayerAfkNotice(va?.userId);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -327,6 +353,7 @@ namespace Assets.MyGame.Scripts.Net
|
||||
// 玩家取消挂起通知 { userId }(房间组推送;发起者本人另收 BeginGame 恢复房间同步)
|
||||
var va = JsonConvert.DeserializeObject<WebSocketResponseBase<PlayerAfkNoticeData>>(msg).arguments[0];
|
||||
Debug.Log($"[Chess] 玩家取消挂起: userId={va?.userId}");
|
||||
if (roomMainPanel != null) roomMainPanel.OnPlayerCancelAfkNotice(va?.userId);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user