提交 16ed8fb7 authored 作者: lidongxu's avatar lidongxu

修复大屏幕队伍人员名字不对的问题

上级 1064c573
...@@ -148,14 +148,16 @@ function _dispatch(event, data) { ...@@ -148,14 +148,16 @@ function _dispatch(event, data) {
/** /**
* 某个玩家游戏结束(正常结束/泡泡压底) * 某个玩家游戏结束(正常结束/泡泡压底)
* data: { roomId, scores: {playerId: score, ...}, playerId, nickname } * data: { roomId, scores: {playerId: score, ...}, nicknames: {playerId: nickname, ...}, playerId, nickname }
*/ */
case 'room:gameOver': { case 'room:gameOver': {
console.log('[Socket] room:gameOver', data) console.log('[Socket] room:gameOver', data)
// 处理所有玩家的分数(新格式) // 处理所有玩家的分数(新格式)
if (data?.scores) { if (data?.scores) {
Object.entries(data.scores).forEach(([pid, score]) => { Object.entries(data.scores).forEach(([pid, score]) => {
setPlayerGameOver(Number(pid), score, data.nickname) // 使用对应玩家的昵称,如果没有则使用广播中的昵称
const playerNickname = data.nicknames?.[pid] || data.nickname
setPlayerGameOver(Number(pid), score, playerNickname)
}) })
} else if (data?.playerId !== undefined) { } else if (data?.playerId !== undefined) {
// 兼容旧格式:单个玩家分数 // 兼容旧格式:单个玩家分数
......
...@@ -254,10 +254,12 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro ...@@ -254,10 +254,12 @@ function registerRoomHandlers(ws, { broadcastToRoom, joinRoom, leaveAllRooms, ro
// 广播当前收集到的分数给所有人(让客户端可以实时显示) // 广播当前收集到的分数给所有人(让客户端可以实时显示)
const scoresObj = {}; const scoresObj = {};
const nicknamesObj = {};
for (const [pid, data] of roomScores) { for (const [pid, data] of roomScores) {
scoresObj[pid] = data.score; scoresObj[pid] = data.score;
nicknamesObj[pid] = data.nickname;
} }
broadcastToRoom(roomId, 'room:gameOver', { roomId, scores: scoresObj, playerId, nickname }); broadcastToRoom(roomId, 'room:gameOver', { roomId, scores: scoresObj, nicknames: nicknamesObj, playerId, nickname });
// 如果所有玩家都已上报分数,清理收集表 // 如果所有玩家都已上报分数,清理收集表
if (reportedPlayers >= totalPlayers) { if (reportedPlayers >= totalPlayers) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论