From ccfd09bb01dcda96aa4cd49f0764f6be35fb5172 Mon Sep 17 00:00:00 2001 From: kron Date: Fri, 18 Jul 2025 11:21:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=9B=9E=E6=AF=94=E8=B5=9B=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/UserHeader.vue | 23 +++++----- src/pages/battle-room.vue | 83 +++++++++++++++++++---------------- src/pages/melee-match.vue | 35 ++++++++------- src/pages/team-match.vue | 36 +++++++-------- 4 files changed, 92 insertions(+), 85 deletions(-) diff --git a/src/components/UserHeader.vue b/src/components/UserHeader.vue index fdf6365..0cf5248 100644 --- a/src/components/UserHeader.vue +++ b/src/components/UserHeader.vue @@ -39,11 +39,11 @@ const toRankListPage = () => { watch( () => [config.value, user.value], ([n_config, n_user]) => { - const rankInfos = n_config.randInfos || []; - if (n_user.id && rankInfos.length) { - rankInfos.some((r, index) => { - if (r.upgrade_scores && r.upgrade_scores > n_user.scores) { - nextLvlPoints.value = r.upgrade_scores; + const list = n_config.levelInfo || []; + if (n_user.id && list.length) { + list.some((r, index) => { + if (r.exp_required && r.exp_required > n_user.lvlPoints) { + nextLvlPoints.value = r.exp_required; return true; } return false; @@ -75,17 +75,17 @@ watch( /> - {{ user.lvlName }} - L{{ user.lvl }} + + LV{{ user.lvl }} - {{ Math.max(user.scores, 0) }}/{{ nextLvlPoints }} + {{ user.lvlPoints }}{{ nextLvlPoints ? `/${nextLvlPoints}` : "" }} @@ -175,7 +175,7 @@ watch( } .level-tag-second { - width: 25px; + width: 60rpx; background: #09c504; } @@ -188,7 +188,7 @@ watch( .rank-tag { position: relative; background-color: #00000038; - width: 100rpx; + width: 150rpx; overflow: hidden; } @@ -233,6 +233,7 @@ watch( align-items: center; } .signin > image { + border-radius: 50%; width: 40px; height: 40px; } diff --git a/src/pages/battle-room.vue b/src/pages/battle-room.vue index 89e28b9..e4c788d 100644 --- a/src/pages/battle-room.vue +++ b/src/pages/battle-room.vue @@ -79,12 +79,15 @@ onLoad(async (options) => { if (battleInfo) { battleId.value = battleInfo.id; battleType.value = battleInfo.config.mode; - start.value = true; - step.value = 3; + step.value = 2; if (battleInfo.config.mode === 1) { redTeam.value = battleInfo.redTeam; blueTeam.value = battleInfo.blueTeam; currentRound.value = battleInfo.currentRound; + totalRounds.value = battleInfo.maxRound; + if (battleInfo.startTime < 0) return; + start.value = true; + step.value = 3; battleInfo.roundResults.forEach((round) => { if (round.blueTotal && round.redTotal) { if (round.blueTotal === round.redTotal) { @@ -97,19 +100,16 @@ onLoad(async (options) => { } } }); - totalRounds.value = battleInfo.maxRound; roundResults.value = battleInfo.roundResults; currentShooterId.value = battleInfo.firePlayerIndex; setTimeout(() => { if (battleInfo.roundResults[battleInfo.roundResults.length - 1]) { - scores.value = - battleInfo.roundResults[ - battleInfo.roundResults.length - 1 - ].redArrows; - blueScores.value = - battleInfo.roundResults[ - battleInfo.roundResults.length - 1 - ].blueArrows; + scores.value = battleInfo.roundResults[ + battleInfo.roundResults.length - 1 + ].redArrows.filter((item) => !!item.playerId); + blueScores.value = battleInfo.roundResults[ + battleInfo.roundResults.length - 1 + ].blueArrows.filter((item) => !!item.playerId); } }, 300); if ( @@ -117,10 +117,12 @@ onLoad(async (options) => { battleInfo.blueTeam[0].shotHistory[battleInfo.currentRound] ) { roundResults.value.push({ - redArrows: - battleInfo.redTeam[0].shotHistory[battleInfo.currentRound], - blueArrows: - battleInfo.blueTeam[0].shotHistory[battleInfo.currentRound], + redArrows: battleInfo.redTeam[0].shotHistory[ + battleInfo.currentRound + ].filter((item) => !!item.playerId), + blueArrows: battleInfo.blueTeam[0].shotHistory[ + battleInfo.currentRound + ].filter((item) => !!item.playerId), }); } else if (battleInfo.currentRound < 5) { roundResults.value.push({ @@ -146,32 +148,36 @@ onLoad(async (options) => { } } } else if (battleInfo.config.mode === 2) { - tips.value = "请连续射出6支箭"; players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam]; + players.value.forEach((p) => { + playersScores.value[p.id] = []; + }); + if (battleInfo.startTime < 0) return; + start.value = true; + step.value = 3; + tips.value = "请连续射出6支箭"; players.value.forEach((p) => { playersScores.value[p.id] = p.arrows; if (p.id === user.value.id) { scores.value = p.arrows; } }); - if (battleInfo.startTime > 0) { - const remain = Date.now() / 1000 - battleInfo.startTime; - if (remain <= 90) { - setTimeout(() => { - uni.$emit("update-ramain", remain); - }, 300); - } else if (remain > 90 && remain <= 110) { - halfTimeTip.value = true; - total.value = 20; - tips.value = "准备下半场"; - setTimeout(() => { - uni.$emit("update-ramain", 110 - remain); - }, 300); - } else if (remain > 110) { - setTimeout(() => { - uni.$emit("update-ramain", remain - 110); - }, 300); - } + const remain = Date.now() / 1000 - battleInfo.startTime; + if (remain <= 90) { + setTimeout(() => { + uni.$emit("update-ramain", remain); + }, 300); + } else if (remain > 90 && remain <= 110) { + halfTimeTip.value = true; + total.value = 20; + tips.value = "准备下半场"; + setTimeout(() => { + uni.$emit("update-ramain", 110 - remain); + }, 300); + } else if (remain > 110) { + setTimeout(() => { + uni.$emit("update-ramain", remain - 110); + }, 300); } } } @@ -328,11 +334,10 @@ async function onReceiveMessage(messages = []) { scores.value = []; totalRounds.value = msg.groupUserStatus.config.maxRounds; step.value = 3; - if (!roundResults.value.length) - roundResults.value.push({ - redArrows: [], - blueArrows: [], - }); + roundResults.value.push({ + redArrows: [], + blueArrows: [], + }); total.value = 15; } if (msg.constructor === MESSAGETYPES.MeleeAllReady) { diff --git a/src/pages/melee-match.vue b/src/pages/melee-match.vue index 02b6d4c..06c1b22 100644 --- a/src/pages/melee-match.vue +++ b/src/pages/melee-match.vue @@ -57,30 +57,31 @@ onLoad(async (options) => { console.log("----battleInfo", battleInfo); if (battleInfo) { battleId.value = battleInfo.id; - start.value = true; - startCount.value = true; - tips.value = "请连续射出6支箭"; players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam]; + players.value.forEach((p) => { + playersScores.value[p.id] = []; + }); + if (battleInfo.startTime <= 0) return; + start.value = true; + tips.value = "请连续射出6支箭"; players.value.forEach((p) => { playersScores.value[p.id] = p.arrows; if (p.id === user.value.id) { scores.value = p.arrows; } }); - if (battleInfo.startTime > 0) { - const remain = Date.now() / 1000 - battleInfo.startTime; - if (remain <= 90) { - setTimeout(() => { - uni.$emit("update-ramain", remain); - }, 300); - } else if (remain > 90 && remain <= 110) { - startCount.value = false; - tips.value = "准备下半场"; - } else if (remain > 110) { - setTimeout(() => { - uni.$emit("update-ramain", remain - 110); - }, 300); - } + const remain = Date.now() / 1000 - battleInfo.startTime; + if (remain <= 90) { + setTimeout(() => { + uni.$emit("update-ramain", remain); + }, 300); + } else if (remain > 90 && remain <= 110) { + startCount.value = false; + tips.value = "准备下半场"; + } else if (remain > 110) { + setTimeout(() => { + uni.$emit("update-ramain", remain - 110); + }, 300); } } } else { diff --git a/src/pages/team-match.vue b/src/pages/team-match.vue index e70d2b7..25c0c3f 100644 --- a/src/pages/team-match.vue +++ b/src/pages/team-match.vue @@ -50,9 +50,10 @@ onLoad(async (options) => { console.log("----battleInfo", battleInfo); if (battleInfo) { battleId.value = battleInfo.id; - start.value = true; redTeam.value = battleInfo.redTeam; blueTeam.value = battleInfo.blueTeam; + if (battleInfo.startTime < 0) return; + start.value = true; currentRound.value = battleInfo.currentRound; battleInfo.roundResults.forEach((round) => { if (round.blueTotal && round.redTotal) { @@ -70,14 +71,12 @@ onLoad(async (options) => { roundResults.value = battleInfo.roundResults; setTimeout(() => { if (battleInfo.roundResults[battleInfo.roundResults.length - 1]) { - scores.value = - battleInfo.roundResults[ - battleInfo.roundResults.length - 1 - ].redArrows; - blueScores.value = - battleInfo.roundResults[ - battleInfo.roundResults.length - 1 - ].blueArrows; + scores.value = battleInfo.roundResults[ + battleInfo.roundResults.length - 1 + ].redArrows.filter((item) => !!item.playerId); + blueScores.value = battleInfo.roundResults[ + battleInfo.roundResults.length - 1 + ].blueArrows.filter((item) => !!item.playerId); } }, 300); if ( @@ -85,9 +84,12 @@ onLoad(async (options) => { battleInfo.blueTeam[0].shotHistory[battleInfo.currentRound] ) { roundResults.value.push({ - redArrows: battleInfo.redTeam[0].shotHistory[battleInfo.currentRound], - blueArrows: - battleInfo.blueTeam[0].shotHistory[battleInfo.currentRound], + redArrows: battleInfo.redTeam[0].shotHistory[ + battleInfo.currentRound + ].filter((item) => !!item.playerId), + blueArrows: battleInfo.blueTeam[0].shotHistory[ + battleInfo.currentRound + ].filter((item) => !!item.playerId), }); } else if (battleInfo.currentRound < 5) { roundResults.value.push({ @@ -157,12 +159,10 @@ async function onReceiveMessage(messages = []) { timerSeq.value = 0; scores.value = []; totalRounds.value = msg.groupUserStatus.config.maxRounds; - // 返回游戏时候会加上,加了就不用再加了 - if (!roundResults.value.length) - roundResults.value.push({ - redArrows: [], - blueArrows: [], - }); + roundResults.value.push({ + redArrows: [], + blueArrows: [], + }); } if (msg.constructor === MESSAGETYPES.ToSomeoneShoot) { if (currentShooterId.value !== msg.userId) {