细节完善

This commit is contained in:
kron
2025-07-25 16:47:07 +08:00
parent 10af25c254
commit caef627ce4
3 changed files with 63 additions and 57 deletions

View File

@@ -77,7 +77,7 @@ onUnmounted(() => {
v-if="bluePoint === 0 && redPoint === 0" v-if="bluePoint === 0 && redPoint === 0"
:style="{ marginTop: '20px' }" :style="{ marginTop: '20px' }"
> >
连续3个来回无人射箭比赛取消 连续3个来回双方均无人射箭比赛取消
</text> </text>
<text v-if="bluePoint !== 0 && bluePoint === redPoint"> <text v-if="bluePoint !== 0 && bluePoint === redPoint">
红队蓝队各得<text :style="{ color: '#fed847', margin: '0 5px' }">{{ 红队蓝队各得<text :style="{ color: '#fed847', margin: '0 5px' }">{{

View File

@@ -82,7 +82,7 @@ onUnmounted(() => {
<text>大人请射箭</text> <text>大人请射箭</text>
</block> </block>
</view> </view>
<view class="debug-text">{{ debugInfo }}</view> <!-- <view class="debug-text">{{ debugInfo }}</view> -->
<view> <view>
<view class="simul" @click="simulShoot" :style="{ color: '#fff' }"> <view class="simul" @click="simulShoot" :style="{ color: '#fff' }">
模拟射箭 模拟射箭

View File

@@ -218,63 +218,56 @@ function recoverData(battleInfo) {
} }
} }
onLoad(async (options) => { async function refreshRoomData() {
if (options.battleId) { if (!roomNumber.value) return;
const battleInfo = uni.getStorageSync("current-battle"); const result = await getRoomAPI(roomNumber.value);
if (battleInfo) recoverData(battleInfo); room.value = result;
setTimeout(getCurrentGameAPI, 2000); battleType.value = result.battleType;
} result.members.some((m) => {
if (options.roomNumber) { if (m.userInfo.id === result.creator) {
roomNumber.value = options.roomNumber; owner.value = {
const result = await getRoomAPI(options.roomNumber); id: m.userInfo.id,
room.value = result; name: m.userInfo.name,
battleType.value = result.battleType; avatar: m.userInfo.avatar,
result.members.some((m) => { };
if (m.userInfo.id === result.creator) { return true;
owner.value = { }
id: m.userInfo.id, return false;
name: m.userInfo.name, });
avatar: m.userInfo.avatar, if (result.battleType === 1) {
}; if (user.value.id !== owner.value.id) {
return true; opponent.value = {
} id: user.value.id,
return false; name: user.value.nickName,
}); avatar: user.value.avatar,
if (result.battleType === 1) { };
if (user.value.id !== owner.value.id) { } else if (result.members.length > 1) {
opponent.value = { result.members.some((m) => {
id: user.value.id, if (m.userInfo.id !== owner.value.id) {
name: user.value.nickName, opponent.value = {
avatar: user.value.avatar, id: m.userInfo.id,
}; name: m.userInfo.name,
} else if (result.members.length > 1) { avatar: m.userInfo.avatar,
result.members.some((m) => { };
if (m.userInfo.id !== owner.value.id) { return true;
opponent.value = { }
id: m.userInfo.id, return false;
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);
}); });
} }
} 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 startGame = async () => {
const result = await startRoomAPI(room.value.number); 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(() => { onMounted(() => {
uni.setKeepScreenOn({ uni.setKeepScreenOn({
keepScreenOn: true, keepScreenOn: true,
@@ -562,6 +566,8 @@ onShow(async () => {
} }
}; };
refreshTimer.value = setInterval(refreshData, 2000); refreshTimer.value = setInterval(refreshData, 2000);
} else {
refreshRoomData();
} }
}); });
onHide(() => { onHide(() => {
@@ -572,7 +578,7 @@ onHide(() => {
<template> <template>
<Container <Container
:title="`好友约战 - ${roomNumber}`" :title="`好友约战 ${battleId ? '' : '- ' + roomNumber}`"
:onBack="onBack" :onBack="onBack"
:bgType="battleId ? 1 : 0" :bgType="battleId ? 1 : 0"
> >