From caef627ce450f2937857456204f4171d505cf853 Mon Sep 17 00:00:00 2001 From: kron Date: Fri, 25 Jul 2025 16:47:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=86=E8=8A=82=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/RoundEndTip.vue | 2 +- src/components/TestDistance.vue | 2 +- src/pages/battle-room.vue | 116 +++++++++++++++++--------------- 3 files changed, 63 insertions(+), 57 deletions(-) diff --git a/src/components/RoundEndTip.vue b/src/components/RoundEndTip.vue index 1ad4284..3c7d91b 100644 --- a/src/components/RoundEndTip.vue +++ b/src/components/RoundEndTip.vue @@ -77,7 +77,7 @@ onUnmounted(() => { v-if="bluePoint === 0 && redPoint === 0" :style="{ marginTop: '20px' }" > - 连续3个来回无人射箭,比赛被取消 + 连续3个来回双方均无人射箭,比赛取消。 红队、蓝队各得{{ diff --git a/src/components/TestDistance.vue b/src/components/TestDistance.vue index 611c9eb..eb576e1 100644 --- a/src/components/TestDistance.vue +++ b/src/components/TestDistance.vue @@ -82,7 +82,7 @@ onUnmounted(() => { 大人,请射箭 - {{ debugInfo }} + 模拟射箭 diff --git a/src/pages/battle-room.vue b/src/pages/battle-room.vue index 419e036..c501809 100644 --- a/src/pages/battle-room.vue +++ b/src/pages/battle-room.vue @@ -218,63 +218,56 @@ function recoverData(battleInfo) { } } -onLoad(async (options) => { - if (options.battleId) { - const battleInfo = uni.getStorageSync("current-battle"); - if (battleInfo) recoverData(battleInfo); - setTimeout(getCurrentGameAPI, 2000); - } - if (options.roomNumber) { - roomNumber.value = options.roomNumber; - const result = await getRoomAPI(options.roomNumber); - room.value = result; - battleType.value = result.battleType; - result.members.some((m) => { - if (m.userInfo.id === result.creator) { - owner.value = { - id: m.userInfo.id, - name: m.userInfo.name, - avatar: m.userInfo.avatar, - }; - return true; - } - return false; - }); - if (result.battleType === 1) { - if (user.value.id !== owner.value.id) { - opponent.value = { - id: user.value.id, - name: user.value.nickName, - avatar: user.value.avatar, - }; - } else if (result.members.length > 1) { - result.members.some((m) => { - if (m.userInfo.id !== owner.value.id) { - opponent.value = { - id: m.userInfo.id, - name: m.userInfo.name, - avatar: m.userInfo.avatar, - }; - return true; - } - return false; - }); - } - } else if (result.battleType === 2) { - const ownerIndex = result.members.findIndex( - (m) => m.userInfo.id === result.creator - ); - if (ownerIndex !== -1) { - players.value.push(result.members[ownerIndex].userInfo); - } else { - players.value.push({}); - } - result.members.forEach((m, index) => { - if (ownerIndex !== index) players.value.push(m.userInfo); +async function refreshRoomData() { + if (!roomNumber.value) return; + const result = await getRoomAPI(roomNumber.value); + room.value = result; + battleType.value = result.battleType; + result.members.some((m) => { + if (m.userInfo.id === result.creator) { + owner.value = { + id: m.userInfo.id, + name: m.userInfo.name, + avatar: m.userInfo.avatar, + }; + return true; + } + return false; + }); + if (result.battleType === 1) { + if (user.value.id !== owner.value.id) { + opponent.value = { + id: user.value.id, + name: user.value.nickName, + avatar: user.value.avatar, + }; + } else if (result.members.length > 1) { + result.members.some((m) => { + if (m.userInfo.id !== owner.value.id) { + opponent.value = { + id: m.userInfo.id, + name: m.userInfo.name, + avatar: m.userInfo.avatar, + }; + return true; + } + return false; }); } + } else if (result.battleType === 2) { + const ownerIndex = result.members.findIndex( + (m) => m.userInfo.id === result.creator + ); + if (ownerIndex !== -1) { + players.value.push(result.members[ownerIndex].userInfo); + } else { + players.value.push({}); + } + result.members.forEach((m, index) => { + if (ownerIndex !== index) players.value.push(m.userInfo); + }); } -}); +} const startGame = async () => { const result = await startRoomAPI(room.value.number); @@ -531,6 +524,17 @@ const onBack = () => { } }; +onLoad(async (options) => { + if (options.battleId) { + const battleInfo = uni.getStorageSync("current-battle"); + if (battleInfo) recoverData(battleInfo); + setTimeout(getCurrentGameAPI, 2000); + } else if (options.roomNumber) { + roomNumber.value = options.roomNumber; + refreshRoomData(); + } +}); + onMounted(() => { uni.setKeepScreenOn({ keepScreenOn: true, @@ -562,6 +566,8 @@ onShow(async () => { } }; refreshTimer.value = setInterval(refreshData, 2000); + } else { + refreshRoomData(); } }); onHide(() => { @@ -572,7 +578,7 @@ onHide(() => {