修复大乱斗返回游戏bug
This commit is contained in:
@@ -7,6 +7,10 @@ import { storeToRefs } from "pinia";
|
|||||||
const store = useStore();
|
const store = useStore();
|
||||||
const { user } = storeToRefs(store);
|
const { user } = storeToRefs(store);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
start: {
|
start: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
@@ -182,7 +186,7 @@ onUnmounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="container">
|
<view class="container" :style="{ display: show ? 'block' : 'none' }">
|
||||||
<view>
|
<view>
|
||||||
<image src="../static/shooter.png" mode="widthFix" />
|
<image src="../static/shooter.png" mode="widthFix" />
|
||||||
<text>{{ start && remain === 0 ? "时间到!" : tips }}</text>
|
<text>{{ start && remain === 0 ? "时间到!" : tips }}</text>
|
||||||
|
|||||||
@@ -150,38 +150,27 @@ onLoad(async (options) => {
|
|||||||
}
|
}
|
||||||
} else if (battleInfo.config.mode === 2) {
|
} else if (battleInfo.config.mode === 2) {
|
||||||
players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam];
|
players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam];
|
||||||
players.value.forEach((p) => {
|
|
||||||
playersScores.value[p.id] = [];
|
|
||||||
});
|
|
||||||
if (battleInfo.startTime < 0) return;
|
if (battleInfo.startTime < 0) return;
|
||||||
start.value = true;
|
start.value = true;
|
||||||
step.value = 3;
|
step.value = 3;
|
||||||
players.value.forEach((p) => {
|
players.value.forEach((p) => {
|
||||||
playersScores.value[p.id] = p.arrows;
|
playersScores.value[p.id] = [...p.arrows];
|
||||||
if (p.id === user.value.id) {
|
if (p.id === user.value.id) {
|
||||||
scores.value = p.arrows;
|
scores.value = [...p.arrows];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
tips.value = `${
|
|
||||||
scores.value.length ? "下半场-" : "上半场-"
|
|
||||||
}请连续射6箭`;
|
|
||||||
const remain = Date.now() / 1000 - battleInfo.startTime;
|
const remain = Date.now() / 1000 - battleInfo.startTime;
|
||||||
console.log(`当前局剩余${remain}秒`);
|
console.log(`当前局已进行${remain}秒`);
|
||||||
if (remain <= 90) {
|
if (battleInfo.status === 2) {
|
||||||
|
tips.value = `${
|
||||||
|
battleInfo.halfGame ? "下半场-" : "上半场-"
|
||||||
|
}请连续射6箭`;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
uni.$emit("update-ramain", remain);
|
uni.$emit("update-ramain", 90 - remain);
|
||||||
}, 300);
|
}, 300);
|
||||||
} else if (remain > 90 && remain <= 110) {
|
} else if (battleInfo.status === 9) {
|
||||||
halfTimeTip.value = true;
|
startCount.value = false;
|
||||||
total.value = 20;
|
|
||||||
tips.value = "准备下半场";
|
tips.value = "准备下半场";
|
||||||
setTimeout(() => {
|
|
||||||
uni.$emit("update-ramain", 110 - remain);
|
|
||||||
}, 300);
|
|
||||||
} else if (remain > 110) {
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.$emit("update-ramain", remain - 110);
|
|
||||||
}, 300);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -405,11 +394,11 @@ async function onReceiveMessage(messages = []) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (battleType.value === 2 && msg.userId === user.value.id) {
|
if (battleType.value === 2 && msg.userId === user.value.id) {
|
||||||
scores.value.push(msg.target);
|
scores.value.push({ ...msg.target });
|
||||||
power.value = msg.target.battery;
|
power.value = msg.target.battery;
|
||||||
}
|
}
|
||||||
if (playersScores.value[msg.userId])
|
if (playersScores.value[msg.userId])
|
||||||
playersScores.value[msg.userId].push(msg.target);
|
playersScores.value[msg.userId].push({ ...msg.target });
|
||||||
}
|
}
|
||||||
if (msg.constructor === MESSAGETYPES.CurrentRoundEnded) {
|
if (msg.constructor === MESSAGETYPES.CurrentRoundEnded) {
|
||||||
if (battleType.value === 1) {
|
if (battleType.value === 1) {
|
||||||
|
|||||||
@@ -58,31 +58,27 @@ onLoad(async (options) => {
|
|||||||
if (battleInfo) {
|
if (battleInfo) {
|
||||||
battleId.value = battleInfo.id;
|
battleId.value = battleInfo.id;
|
||||||
players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam];
|
players.value = [...battleInfo.blueTeam, ...battleInfo.redTeam];
|
||||||
players.value.forEach((p) => {
|
|
||||||
playersScores.value[p.id] = [];
|
|
||||||
});
|
|
||||||
if (battleInfo.startTime <= 0) return;
|
if (battleInfo.startTime <= 0) return;
|
||||||
start.value = true;
|
start.value = true;
|
||||||
players.value.forEach((p) => {
|
players.value.forEach((p) => {
|
||||||
playersScores.value[p.id] = p.arrows;
|
playersScores.value[p.id] = [...p.arrows];
|
||||||
if (p.id === user.value.id) {
|
if (p.id === user.value.id) {
|
||||||
scores.value = p.arrows;
|
scores.value = [...p.arrows];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
tips.value = `${scores.value.length ? "下半场-" : "上半场-"}请连续射6箭`;
|
|
||||||
const remain = Date.now() / 1000 - battleInfo.startTime;
|
const remain = Date.now() / 1000 - battleInfo.startTime;
|
||||||
console.log(`当前局剩余${remain}秒`);
|
// 这里的开始时间不是游戏开始时间,而是上半场或者下半场或者中场的开始时间,还要根据状态来判断
|
||||||
if (remain <= 90) {
|
console.log(`当前局已进行${remain}秒`);
|
||||||
|
if (battleInfo.status === 2) {
|
||||||
|
tips.value = `${
|
||||||
|
battleInfo.halfGame ? "下半场-" : "上半场-"
|
||||||
|
}请连续射6箭`;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
uni.$emit("update-ramain", remain);
|
uni.$emit("update-ramain", 90 - remain);
|
||||||
}, 300);
|
}, 300);
|
||||||
} else if (remain > 90 && remain <= 110) {
|
} else if (battleInfo.status === 9) {
|
||||||
startCount.value = false;
|
startCount.value = false;
|
||||||
tips.value = "准备下半场";
|
tips.value = "准备下半场";
|
||||||
} else if (remain > 110) {
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.$emit("update-ramain", remain - 110);
|
|
||||||
}, 300);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -140,10 +136,10 @@ async function onReceiveMessage(messages = []) {
|
|||||||
}
|
}
|
||||||
if (msg.constructor === MESSAGETYPES.ShootResult) {
|
if (msg.constructor === MESSAGETYPES.ShootResult) {
|
||||||
if (msg.userId === user.value.id) {
|
if (msg.userId === user.value.id) {
|
||||||
scores.value.push(msg.target);
|
scores.value.push({ ...msg.target });
|
||||||
power.value = msg.target.battery;
|
power.value = msg.target.battery;
|
||||||
}
|
}
|
||||||
playersScores.value[msg.userId].push(msg.target);
|
playersScores.value[msg.userId].push({ ...msg.target });
|
||||||
}
|
}
|
||||||
if (msg.constructor === MESSAGETYPES.HalfTimeOver) {
|
if (msg.constructor === MESSAGETYPES.HalfTimeOver) {
|
||||||
uni.$emit("update-ramain", 0);
|
uni.$emit("update-ramain", 0);
|
||||||
@@ -190,7 +186,7 @@ onUnmounted(() => {
|
|||||||
keepScreenOn: false,
|
keepScreenOn: false,
|
||||||
});
|
});
|
||||||
uni.$off("socket-inbox", onReceiveMessage);
|
uni.$off("socket-inbox", onReceiveMessage);
|
||||||
if (gameType.value && teamSize.value) {
|
if (gameType.value && teamSize.value && !battleId.value) {
|
||||||
matchGameAPI(false, gameType.value, teamSize.value);
|
matchGameAPI(false, gameType.value, teamSize.value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -207,7 +203,7 @@ onUnmounted(() => {
|
|||||||
<BattleHeader v-if="!start" :players="players" />
|
<BattleHeader v-if="!start" :players="players" />
|
||||||
<TestDistance v-if="!start" :guide="false" />
|
<TestDistance v-if="!start" :guide="false" />
|
||||||
<ShootProgress
|
<ShootProgress
|
||||||
v-if="start"
|
:show="start"
|
||||||
:seq="seq"
|
:seq="seq"
|
||||||
:start="start && startCount"
|
:start="start && startCount"
|
||||||
:tips="tips"
|
:tips="tips"
|
||||||
|
|||||||
Reference in New Issue
Block a user