diff --git a/src/components/BowTarget.vue b/src/components/BowTarget.vue
index 134a2d9..50c0563 100644
--- a/src/components/BowTarget.vue
+++ b/src/components/BowTarget.vue
@@ -46,7 +46,9 @@ function calcRealY(num) {
diff --git a/src/components/ScoreResult.vue b/src/components/ScoreResult.vue
index 4a9646c..4f36de3 100644
--- a/src/components/ScoreResult.vue
+++ b/src/components/ScoreResult.vue
@@ -20,9 +20,9 @@ const props = defineProps({
type: Number,
default: 0,
},
- scores: {
- type: Array,
- default: () => [],
+ result: {
+ type: Object,
+ default: () => ({}),
},
});
const showPanel = ref(true);
@@ -39,14 +39,20 @@ setTimeout(() => {
-
+
完成{{ total }}箭,获得{{
- scores.reduce((last, next) => last + next, 0)
+ result.arrows
+ .map((a) => a.ring)
+ .reduce((last, next) => last + next, 0)
}}点经验
@@ -58,7 +64,9 @@ setTimeout(() => {
本剧成绩(共{{
- scores.reduce((last, next) => last + next, 0)
+ result.arrows
+ .map((a) => a.ring)
+ .reduce((last, next) => last + next, 0)
}}环):
-
- {{ score }}环
+
+ {{ score.ring }}环
@@ -88,8 +96,7 @@ setTimeout(() => {
- 您本次练习取得了 环的成绩,所有箭支上靶后的平均点间距为 ,成绩优秀。
- 针对您本次的练习,我们建议您将设备的瞄准器向左侧调整。
+ {{ result.adjustmentHint }}
diff --git a/src/constants.js b/src/constants.js
index 0d57da0..c09a042 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -1,3 +1,4 @@
export const MESSAGETYPES = {
ShootSyncMeArrowID: parseInt("0x789b6b0d"),
+ ShootSyncMePracticeID: parseInt("0xD88AE05E"),
};
diff --git a/src/pages/first-try.vue b/src/pages/first-try.vue
index 5f5d545..5621cdc 100644
--- a/src/pages/first-try.vue
+++ b/src/pages/first-try.vue
@@ -27,11 +27,14 @@ const stepButtonTexts = [
"",
"退出新手试炼",
];
+const start = ref(false);
+const practiseResult = ref({});
+const power = ref(0);
const onReady = async () => {
const result = await createPractiseAPI(total);
const token = uni.getStorageSync("token");
-
+ start.value = true;
websocket.createWebSocket(token, (content) => {
const messages = JSON.parse(content).data.updates || [];
messages.forEach((msg) => {
@@ -39,9 +42,14 @@ const onReady = async () => {
scores.value.push(msg.target);
if (scores.value.length === total) {
showScore.value = true;
- websocket.closeWebSocket();
}
}
+ if (msg.constructor === MESSAGETYPES.ShootSyncMePracticeID) {
+ practiseResult.value = {
+ ...msg.practice,
+ arrows: JSON.parse(msg.practice.arrows),
+ };
+ }
});
});
};
@@ -144,11 +152,11 @@ const onClose = () => {
v-if="step === 4"
tips="请开始连续射箭"
:total="100"
- :start="true"
+ :start="start"
/>
{
:show="showScore"
v-if="step === 4"
:onClose="onClose"
- :scores="scores.map((s) => s.ring)"
+ :result="practiseResult"
/>
{{
stepButtonTexts[step]
diff --git a/src/pages/practise-one.vue b/src/pages/practise-one.vue
index 7f00298..9c5ad92 100644
--- a/src/pages/practise-one.vue
+++ b/src/pages/practise-one.vue
@@ -14,6 +14,8 @@ const start = ref(false);
const showScore = ref(false);
const scores = ref([]);
const total = 12;
+const practiseResult = ref({});
+const power = ref(0);
const onReady = async () => {
const result = await createPractiseAPI(total);
@@ -25,11 +27,17 @@ const onReady = async () => {
messages.forEach((msg) => {
if (msg.constructor === MESSAGETYPES.ShootSyncMeArrowID) {
scores.value.push(msg.target);
+ power.value = msg.target.battery;
if (scores.value.length === total) {
showScore.value = true;
- websocket.closeWebSocket();
}
}
+ if (msg.constructor === MESSAGETYPES.ShootSyncMePracticeID) {
+ practiseResult.value = {
+ ...msg.practice,
+ arrows: JSON.parse(msg.practice.arrows),
+ };
+ }
});
});
};
@@ -58,7 +66,7 @@ onUnmounted(() => {
:totalRound="total"
:currentRound="scores.length + 1"
avatar="../static/avatar.png"
- :power="45"
+ :power="power"
:scores="scores"
/>
@@ -67,7 +75,7 @@ onUnmounted(() => {
:rowCount="6"
:show="showScore"
:onClose="() => (showScore = false)"
- :scores="scores.map((s) => s.ring)"
+ :result="practiseResult"
/>
准备好了,直接开始
diff --git a/src/pages/practise-two.vue b/src/pages/practise-two.vue
index de83187..92ef8ef 100644
--- a/src/pages/practise-two.vue
+++ b/src/pages/practise-two.vue
@@ -14,6 +14,8 @@ const start = ref(false);
const showScore = ref(false);
const scores = ref([]);
const total = 36;
+const practiseResult = ref({});
+const power = ref(0);
const onReady = async () => {
const result = await createPractiseAPI(total);
@@ -27,9 +29,14 @@ const onReady = async () => {
scores.value.push(msg.target);
if (scores.value.length === total) {
showScore.value = true;
- websocket.closeWebSocket();
}
}
+ if (msg.constructor === MESSAGETYPES.ShootSyncMePracticeID) {
+ practiseResult.value = {
+ ...msg.practice,
+ arrows: JSON.parse(msg.practice.arrows),
+ };
+ }
});
});
};
@@ -41,14 +48,14 @@ onUnmounted(() => {
-
+
-
+
{
:rowCount="9"
:show="showScore"
:onClose="() => (showScore = false)"
- :scores="scores.map((s) => s.ring)"
+ :result="practiseResult"
/>
准备好了,直接开始