提交 dd3c8ec4 authored 作者: lidongxu's avatar lidongxu

退出房间同步状态

上级 a0a166df
...@@ -302,13 +302,25 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro ...@@ -302,13 +302,25 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro
const waiting = waitingRooms.get(String(roomId)); const waiting = waitingRooms.get(String(roomId));
if (waiting) { if (waiting) {
waiting.joined.delete(ws); waiting.joined.delete(ws);
// 从玩家列表中移除断开的玩家
const playerId = ws.ctx.playerId;
if (playerId) {
waiting.players = waiting.players.filter(p => p.playerId !== playerId);
}
const joinedCount = waiting.joined.size; const joinedCount = waiting.joined.size;
console.log(`[Room] 等待中玩家断开 roomId=${roomId},剩余 ${joinedCount}/${waiting.totalSeats}`); const { totalSeats, players } = waiting;
console.log(`[Room] 等待中玩家断开 roomId=${roomId},playerId=${playerId},剩余 ${joinedCount}/${totalSeats}`);
// 广播更新后的玩家列表给剩余玩家
broadcastToRoom(roomId, 'room:playerJoined', { broadcastToRoom(roomId, 'room:playerJoined', {
roomId, roomId,
joinedCount, joinedCount,
totalSeats: waiting.totalSeats, totalSeats,
players,
}); });
if (joinedCount === 0) { if (joinedCount === 0) {
waitingRooms.delete(roomId); waitingRooms.delete(roomId);
roomPlayerCounter.delete(roomId); roomPlayerCounter.delete(roomId);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论