细节完善

This commit is contained in:
kron
2025-07-25 15:18:46 +08:00
parent e5b1194882
commit 10af25c254
7 changed files with 129 additions and 81 deletions

View File

@@ -83,16 +83,14 @@ function recoverData(battleInfo) {
redPoints.value += 2;
}
});
setTimeout(() => {
if (battleInfo.roundResults[battleInfo.roundResults.length - 1]) {
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 (battleInfo.roundResults[battleInfo.roundResults.length - 1]) {
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);
}
if (
battleInfo.redTeam[0].shotHistory[battleInfo.currentRound] ||
battleInfo.blueTeam[0].shotHistory[battleInfo.currentRound]
@@ -111,15 +109,35 @@ function recoverData(battleInfo) {
blueArrows: [],
});
}
if (battleInfo.goldenRound) {
const { ShotCount, RedRecords, BlueRecords } = battleInfo.goldenRound;
const roundCount = Math.max(RedRecords.length, BlueRecords.length);
currentRound.value += roundCount;
isFinalShoot.value = true;
for (let i = 0; i < roundCount; i++) {
const roundData = {
redArrows:
RedRecords && RedRecords[i] ? RedRecords[i].Arrows || [] : [],
blueArrows:
BlueRecords && BlueRecords[i] ? BlueRecords[i].Arrows || [] : [],
};
if (roundResults.value[5 + i]) {
roundResults.value[5 + i] = roundData;
} else {
roundResults.value.push(roundData);
}
}
}
}
// if (battleInfo.status !== 11) return;
if (battleInfo.firePlayerIndex) {
currentShooterId.value = battleInfo.firePlayerIndex;
if (redTeam.value[0].id === currentShooterId.value) {
tips.value = `请红队射箭-第${roundsName[currentRound.value]}`;
} else {
tips.value = `请蓝队射箭-第${roundsName[currentRound.value]}`;
}
if (redTeam.value[0].id === currentShooterId.value)
tips.value = "请红队射箭";
else tips.value = "请蓝队射箭";
tips.value += isFinalShoot.value
? "决金箭"
: `${roundsName[currentRound.value]}`;
}
if (battleInfo.fireTime > 0) {
const remain = Date.now() / 1000 - battleInfo.fireTime;
@@ -198,21 +216,15 @@ async function onReceiveMessage(messages = []) {
const isRed = redTeam.value.find((item) => item.id === msg.userId);
if (isRed) scores.value.push(msg.target);
else blueScores.value.push(msg.target);
if (roundResults.value[currentRound.value - 1]) {
if (isRed && roundResults.value[currentRound.value - 1].redArrows) {
roundResults.value[currentRound.value - 1].redArrows.push(msg.target);
}
if (!isRed && roundResults.value[currentRound.value - 1].blueArrows) {
roundResults.value[currentRound.value - 1].blueArrows.push(
msg.target
);
}
} else {
if (!roundResults.value[currentRound.value - 1]) {
roundResults.value.push({
redArrows: [],
blueArrows: [],
});
}
roundResults.value[currentRound.value - 1][
isRed ? "redArrows" : "blueArrows"
].push(msg.target);
}
if (msg.constructor === MESSAGETYPES.CurrentRoundEnded) {
const result = msg.preRoundResult;
@@ -223,8 +235,8 @@ async function onReceiveMessage(messages = []) {
currentRedPoint.value = result.redScore;
bluePoints.value += result.blueScore;
redPoints.value += result.redScore;
currentRound.value = result.currentRound + 1;
if (result.currentRound < 5) {
currentRound.value = result.currentRound + 1;
roundResults.value.push({
redArrows: [],
blueArrows: [],
@@ -234,6 +246,11 @@ async function onReceiveMessage(messages = []) {
}
if (msg.constructor === MESSAGETYPES.FinalShoot) {
currentShooterId.value = 0;
currentRound.value += 1;
roundResults.value.push({
redArrows: [],
blueArrows: [],
});
if (!isFinalShoot.value) {
isFinalShoot.value = true;
showRoundTip.value = true;
@@ -242,15 +259,13 @@ async function onReceiveMessage(messages = []) {
}
if (msg.constructor === MESSAGETYPES.MatchOver) {
if (msg.endStatus.noSaved) {
// uni.showToast({
// title: "本场比赛无人射箭,已取消",
// icon: "none",
// });
currentRound.value += 1;
currentBluePoint.value = 0;
currentRedPoint.value = 0;
showRoundTip.value = true;
setTimeout(() => {
uni.navigateBack();
}, 1500);
}, 3000);
} else {
isEnded.value = true;
uni.setStorageSync("last-battle", msg.endStatus);