From 3139be5412317dcd2e797478072dc1b2b469c0fb Mon Sep 17 00:00:00 2001 From: kron Date: Mon, 16 Jun 2025 12:01:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=86=E8=8A=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/battle-room.vue | 11 +++++++---- src/pages/friend-battle.vue | 10 +++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/pages/battle-room.vue b/src/pages/battle-room.vue index a90a9ae..aac34ea 100644 --- a/src/pages/battle-room.vue +++ b/src/pages/battle-room.vue @@ -90,6 +90,7 @@ async function onReceiveMessage(content) { messages.forEach((msg) => { if ( msg.roomNumber === roomNumber.value || + (battleId.value && msg.id === battleId.value) || msg.constructor === MESSAGETYPES.WaitForAllReady ) { console.log("收到消息:", msg); @@ -104,6 +105,7 @@ async function onReceiveMessage(content) { battleId.value = msg.id; redTeam.value = msg.groupUserStatus.redTeam; blueTeam.value = msg.groupUserStatus.blueTeam; + step.value = 2; } if (msg.roomNumber === roomNumber.value) { if (msg.constructor === MESSAGETYPES.UserEnterRoom) { @@ -115,7 +117,7 @@ async function onReceiveMessage(content) { }; } } - if (!start && msg.constructor === MESSAGETYPES.UserExitRoom) { + if (!start.value && msg.constructor === MESSAGETYPES.UserExitRoom) { if (room.value.battleType === 1 && room.value.count === 2) { opponent.value = { id: "", @@ -127,6 +129,7 @@ async function onReceiveMessage(content) { title: "房间已解散", icon: "none", }); + roomNumber.value = ""; setTimeout(() => { uni.navigateBack(); }, 1000); @@ -185,9 +188,9 @@ onMounted(() => { onUnmounted(() => { uni.$off("socket-inbox", onReceiveMessage); - if (owner.value) { + if (owner.value.id === user.value.id) { destroyRoomAPI(roomNumber.value); - } else { + } else if (roomNumber.value) { exitRoomAPI(roomNumber.value); } }); @@ -232,7 +235,7 @@ onUnmounted(() => { v-if=" user.id === owner.id && room.battleType === 1 && room.count === 2 " - :disabled="!opponent" + :disabled="!opponent.id" :onClick="startGame" >进入对战 diff --git a/src/pages/friend-battle.vue b/src/pages/friend-battle.vue index 0fd6170..1deac3a 100644 --- a/src/pages/friend-battle.vue +++ b/src/pages/friend-battle.vue @@ -6,7 +6,7 @@ import Guide from "@/components/Guide.vue"; import SButton from "@/components/SButton.vue"; import SModal from "@/components/SModal.vue"; import CreateRoom from "@/components/CreateRoom.vue"; -import { getRoomAPI } from "@/apis"; +import { joinRoomAPI } from "@/apis"; const showModal = ref(false); const warnning = ref(""); @@ -17,7 +17,7 @@ const enterRoom = async () => { warnning.value = "请输入房间号"; showModal.value = true; } else { - const room = await getRoomAPI(roomNumber.value); + const room = await joinRoomAPI(roomNumber.value); if (room.number) { roomNumber.value = ""; uni.navigateTo({ @@ -48,7 +48,11 @@ const createRoom = () => { - + 进入房间