From b37f181c0f487d24df3fb2969346b459be78f020 Mon Sep 17 00:00:00 2001 From: kron Date: Mon, 9 Feb 2026 15:09:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0X=E7=8E=AF=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/audioManager.js | 3 ++- src/components/BowTarget.vue | 8 +++++--- src/components/HeaderProgress.vue | 27 +++++++++++++++------------ src/components/ShootProgress.vue | 2 +- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/audioManager.js b/src/audioManager.js index 68e18c7..1e8f3de 100644 --- a/src/audioManager.js +++ b/src/audioManager.js @@ -59,6 +59,7 @@ export const audioFils = { "https://static.shelingxingqiu.com/attachment/2025-09-17/dcutxin69nj1xh7yfz.mp3", "10环": "https://static.shelingxingqiu.com/attachment/2025-09-17/dcutxinnvsx0tt7ksa.mp3", + X环: "https://static.shelingxingqiu.com/attachment/2026-02-09/dga8puwekpe2gmtbu4.mp3", 向上调整: "https://static.shelingxingqiu.com/attachment/2025-11-12/de6ellf5pfvu3l8dhr.mp3", 向右上调整: @@ -132,7 +133,7 @@ class AudioManager { this.localFileCache = uni.getStorageSync("audio_local_files") || {}; // 启动时自动清理过期的缓存文件(URL 已不在 audioFils 中的文件) this.cleanObsoleteCache(); - + this.initAudios(); } diff --git a/src/components/BowTarget.vue b/src/components/BowTarget.vue index c74da13..63611f7 100644 --- a/src/components/BowTarget.vue +++ b/src/components/BowTarget.vue @@ -92,7 +92,8 @@ const simulShoot = async () => { if (device.value.deviceId) await simulShootAPI(device.value.deviceId); }; const simulShoot2 = async () => { - if (device.value.deviceId) await simulShootAPI(device.value.deviceId, 1, 1); + if (device.value.deviceId) + await simulShootAPI(device.value.deviceId, 0.01, 0.01); }; const env = computed(() => { @@ -180,7 +181,8 @@ onBeforeUnmount(() => { left: calcRealX(latestOne.ring ? latestOne.x : 0, 28), top: calcRealY(latestOne.ring ? latestOne.y : 0, 28), }" - >{{ latestOne.ring || "未上靶" }} + >{{ latestOne.ringX ? "X" : latestOne.ring || "未上靶" + }} {{ bluelatestOne.ring || "未上靶" + >{{ bluelatestOne.ringX ? "X" : bluelatestOne.ring || "未上靶" }} diff --git a/src/components/HeaderProgress.vue b/src/components/HeaderProgress.vue index 791aa88..9a97065 100644 --- a/src/components/HeaderProgress.vue +++ b/src/components/HeaderProgress.vue @@ -49,31 +49,34 @@ const updateSound = () => { async function onReceiveMessage(message) { if (ended.value) return; if (Array.isArray(message)) return; - if (message.type === MESSAGETYPESV2.BattleStart) { - melee.value = Boolean(message.mode > 3); - totalShot.value = message.mode === 1 ? 3 : 2; + const { type, mode, current, shootData } = message; + if (type === MESSAGETYPESV2.BattleStart) { + melee.value = Boolean(mode > 3); + totalShot.value = mode === 1 ? 3 : 2; currentRoundEnded.value = true; audioManager.play("比赛开始"); } - if (message.type === MESSAGETYPESV2.BattleEnd) { + if (type === MESSAGETYPESV2.BattleEnd) { audioManager.play("比赛结束"); } - if (message.type === MESSAGETYPESV2.ShootResult) { - if (melee.value && message.current.playerId !== user.value.id) return; - if (message.current.playerId === user.value.id) currentShot.value++; + if (type === MESSAGETYPESV2.ShootResult) { + if (melee.value && current.playerId !== user.value.id) return; + if (current.playerId === user.value.id) currentShot.value++; if (message.shootData) { let key = []; key.push( - message.shootData.ring ? `${message.shootData.ring}环` : "未上靶" + shootData.ring + ? `${shootData.ringX ? "X" : shootData.ring}环` + : "未上靶" ); - if (!message.shootData.ring) - key.push(`向${getDirectionText(message.shootData.angle)}调整`); + if (!shootData.ring) + key.push(`向${getDirectionText(shootData.angle)}调整`); audioManager.play(key, false); } } - if (message.type === MESSAGETYPESV2.NewRound) { + if (type === MESSAGETYPESV2.NewRound) { currentShot.value = 0; - currentRound.value = message.current.round; + currentRound.value = current.round; currentRoundEnded.value = true; } } diff --git a/src/components/ShootProgress.vue b/src/components/ShootProgress.vue index 1ee5f59..42cb6ca 100644 --- a/src/components/ShootProgress.vue +++ b/src/components/ShootProgress.vue @@ -136,7 +136,7 @@ async function onReceiveMessage(msg) { if (msg.shootData) arrow = msg.shootData; } let key = []; - key.push(arrow.ring ? `${arrow.ring}环` : "未上靶"); + key.push(arrow.ring ? `${arrow.ringX ? "X" : arrow.ring}环` : "未上靶"); if (!arrow.ring) key.push(`向${getDirectionText(arrow.angle)}调整`); audioManager.play(key, false); } else if (msg.type === MESSAGETYPESV2.HalfRest) {