update:优化射箭窗口逻辑
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user