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

退出房间同步状态

上级 a0a166df
......@@ -302,13 +302,25 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro
const waiting = waitingRooms.get(String(roomId));
if (waiting) {
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;
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', {
roomId,
joinedCount,
totalSeats: waiting.totalSeats,
totalSeats,
players,
});
if (joinedCount === 0) {
waitingRooms.delete(roomId);
roomPlayerCounter.delete(roomId);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论