diff --git a/src/pages/team-battle/index.vue b/src/pages/team-battle/index.vue index d51ce9a..984a4d5 100644 --- a/src/pages/team-battle/index.vue +++ b/src/pages/team-battle/index.vue @@ -46,7 +46,6 @@ const ROUND_TIP_DELAY = 800; const ROUND_TIP_WAIT_GRACE = 300; const PROGRESS_START_DELAY = 100; const PROGRESS_MIN_TICK_MS = 1; -const PROGRESS_ZERO_WAIT_GRACE = 120; const AUDIO_TIMEOUT_BASE = 3500; const AUDIO_TIMEOUT_PER_KEY = 2600; const AUDIO_TIMEOUT_MAX = 12000; @@ -335,26 +334,6 @@ function markProgressDeadline(countdown, delayMs = 0) { progressDeadlineAt = Date.now() + delayMs + countdown.durationMs; } -function waitForProgressZero() { - const waitMs = Math.ceil(progressDeadlineAt - Date.now()); - if (waitMs <= 0) return Promise.resolve(); - - return new Promise((resolve) => { - let settled = false; - const waiter = { - done: () => { - if (settled) return; - settled = true; - clearTimeout(timer); - progressZeroWaiters.delete(waiter); - resolve(); - }, - }; - const timer = setTimeout(waiter.done, waitMs + PROGRESS_ZERO_WAIT_GRACE); - progressZeroWaiters.add(waiter); - }); -} - function onProgressZero() { progressDeadlineAt = 0; clearProgressZeroWaiters(); @@ -934,17 +913,12 @@ async function runBattleStartTask(task, runId) { // 新射手任务:切换当前射手、播报提示,并启动这一箭的倒计时。 async function runToSomeoneShootTask(task, runId) { - // 新射手任务:先等上一轮倒计时归零,再更新展示、播轮次/射手语音、启动倒计时。 - const battleInfo = task.message; - const shouldEnterImmediately = showRoundTip.value; - if (shouldEnterImmediately) { - cancelRoundTipDisplay(); - progressDeadlineAt = 0; - clearProgressZeroWaiters(); - } else { - await waitForProgressZero(); - } if (!isQueueAlive(runId)) return; + // 后端换人消息表示上一箭已结束,立即停止旧计时,不再等待本地倒计时归零。 + const battleInfo = task.message; + progressDeadlineAt = 0; + clearProgressZeroWaiters(); + uni.$emit("update-remain", { stop: true }); applyBattleBase(battleInfo); start.value = true;