重回比赛逻辑优化

This commit is contained in:
kron
2025-07-18 11:21:19 +08:00
parent db4ec13bac
commit ccfd09bb01
4 changed files with 92 additions and 85 deletions

View File

@@ -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(
/>
</view>
<view class="user-stats">
<text class="level-tag level-tag-first">{{ user.lvlName }}</text>
<text class="level-tag level-tag-second">L{{ user.lvl }}</text>
<!-- <text class="level-tag level-tag-first">{{ user.lvlName }}</text> -->
<text class="level-tag level-tag-second">LV{{ user.lvl }}</text>
<view class="rank-tag">
<view
class="rank-tag-progress"
:style="{
width: `${(Math.max(user.scores, 0) / nextLvlPoints) * 100}%`,
width: `${(user.lvlPoints / nextLvlPoints) * 100}%`,
}"
/>
<text class="rank-tag-text">
{{ Math.max(user.scores, 0) }}/{{ nextLvlPoints }}
{{ user.lvlPoints }}{{ nextLvlPoints ? `/${nextLvlPoints}` : "" }}
</text>
</view>
</view>
@@ -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;
}

View File

@@ -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[
scores.value = battleInfo.roundResults[
battleInfo.roundResults.length - 1
].redArrows;
blueScores.value =
battleInfo.roundResults[
].redArrows.filter((item) => !!item.playerId);
blueScores.value = battleInfo.roundResults[
battleInfo.roundResults.length - 1
].blueArrows;
].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,15 +148,20 @@ 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(() => {
@@ -175,7 +182,6 @@ onLoad(async (options) => {
}
}
}
}
if (options.roomNumber) {
roomNumber.value = options.roomNumber;
const result = await getRoomAPI(options.roomNumber);
@@ -328,7 +334,6 @@ async function onReceiveMessage(messages = []) {
scores.value = [];
totalRounds.value = msg.groupUserStatus.config.maxRounds;
step.value = 3;
if (!roundResults.value.length)
roundResults.value.push({
redArrows: [],
blueArrows: [],

View File

@@ -57,17 +57,19 @@ 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(() => {
@@ -82,7 +84,6 @@ onLoad(async (options) => {
}, 300);
}
}
}
} else {
gameType.value = options.gameType;
teamSize.value = options.teamSize;

View File

@@ -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[
scores.value = battleInfo.roundResults[
battleInfo.roundResults.length - 1
].redArrows;
blueScores.value =
battleInfo.roundResults[
].redArrows.filter((item) => !!item.playerId);
blueScores.value = battleInfo.roundResults[
battleInfo.roundResults.length - 1
].blueArrows;
].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,8 +159,6 @@ async function onReceiveMessage(messages = []) {
timerSeq.value = 0;
scores.value = [];
totalRounds.value = msg.groupUserStatus.config.maxRounds;
// 返回游戏时候会加上,加了就不用再加了
if (!roundResults.value.length)
roundResults.value.push({
redArrows: [],
blueArrows: [],