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) {