update:新增乱斗语音,排位赛界面新增统计
This commit is contained in:
+21
-2
@@ -9,6 +9,7 @@ import {
|
||||
getServerMessageTypeName,
|
||||
} from "@/utils/matchProtocol";
|
||||
import { MESSAGETYPESV2 } from "@/constants";
|
||||
import meleeCompletionTracker from "@/utils/meleeCompletionAudio";
|
||||
import {
|
||||
getDirectionText,
|
||||
getDistanceCheckAudioKey,
|
||||
@@ -597,7 +598,10 @@ function getAckAudioKeys(message, businessMessage) {
|
||||
stabilityMilestoneAudioKey,
|
||||
].filter(Boolean);
|
||||
}
|
||||
return getShootResultAudioKeys(businessMessage?.shootData);
|
||||
return [
|
||||
...getShootResultAudioKeys(businessMessage?.shootData),
|
||||
businessMessage?.meleeCompletionAudioKey,
|
||||
].filter(Boolean);
|
||||
case ServerMessageType.SERVER_MSG_MATCH_END:
|
||||
return ["比赛结束"];
|
||||
case ServerMessageType.SERVER_MSG_TIMEOUT:
|
||||
@@ -1001,7 +1005,7 @@ function queueAckAfterAudio(message, businessMessage) {
|
||||
task.expectedAudioKey
|
||||
);
|
||||
completeAckTask(task);
|
||||
}, ACK_AUDIO_TIMEOUT_MS);
|
||||
}, businessMessage?.meleeCompletionAudioKey ? 20000 : ACK_AUDIO_TIMEOUT_MS);
|
||||
pendingAcks.push(task);
|
||||
console.log(
|
||||
`[match-ws] ${actionLabel} queued until audioEnded`,
|
||||
@@ -1064,6 +1068,21 @@ function handleMessage(data) {
|
||||
}
|
||||
// 阈值事件必须先于 ACK 判断生成,确保无 sequence 的状态推送也能播放。
|
||||
attachStabilityAudioContext(message, businessMessage);
|
||||
if (businessMessage && isMeleeMessage(message, businessMessage)) {
|
||||
const info = {
|
||||
...businessMessage,
|
||||
mode: getCurrentMode(message, businessMessage),
|
||||
};
|
||||
if (businessMessage.type === MESSAGETYPESV2.ShootResult) {
|
||||
businessMessage.meleeCompletionAudioKey =
|
||||
meleeCompletionTracker.getShotAudio(info, currentContext?.userId);
|
||||
} else {
|
||||
// 中场/结束消息即使不带完整成绩,也关闭已经结束的半场。
|
||||
if (businessMessage.type === MESSAGETYPESV2.HalfRest) info.status = 3;
|
||||
if (businessMessage.type === MESSAGETYPESV2.BattleEnd) info.status = 2;
|
||||
meleeCompletionTracker.observe(info, currentContext?.userId);
|
||||
}
|
||||
}
|
||||
queueAckAfterAudio(message, businessMessage);
|
||||
emitBusinessMessage(businessMessage);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user