From 9a06dcf942029027f6ed1dda7e1ddd88aa5d95d1 Mon Sep 17 00:00:00 2001
From: zhangyibo95 <690096405@qq.com>
Date: Tue, 25 Aug 2026 17:36:54 +0800
Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=E5=AF=B9=E6=8E=A5=E8=8A=82?=
=?UTF-8?q?=E5=A5=8F=E8=AE=AD=E7=BB=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/training/components/ScoreResult.vue | 11 +-
src/pages/training/index.vue | 96 ++++++------------
src/pages/training/practise-one.vue | 32 +++++-
src/static/training-home/img_2.png | Bin 0 -> 2096 bytes
src/static/training-home/ziyouxunlian.png | Bin 0 -> 1790 bytes
src/utils/match.min.js | 2 +-
src/utils/matchProtocol.js | 6 +-
7 files changed, 74 insertions(+), 73 deletions(-)
create mode 100644 src/static/training-home/img_2.png
create mode 100644 src/static/training-home/ziyouxunlian.png
diff --git a/src/pages/training/components/ScoreResult.vue b/src/pages/training/components/ScoreResult.vue
index dd7f2b6..a30bfac 100644
--- a/src/pages/training/components/ScoreResult.vue
+++ b/src/pages/training/components/ScoreResult.vue
@@ -247,6 +247,13 @@ const metricConfigs = {
deltaKeys: ["deltaTotalRings", "delta_total_rings"],
deltaUnit: "环",
},
+ {
+ label: "十环次数",
+ valueKeys: ["tenRingCount", "ten_ring_count"],
+ unit: "次",
+ deltaKeys: ["deltaTenRingCount", "delta_ten_ring_count"],
+ deltaUnit: "次",
+ },
],
endurance: [
{
@@ -364,7 +371,7 @@ const calories = computed(
--
-
+
消耗卡路里
@@ -447,7 +454,7 @@ const calories = computed(
-
diff --git a/src/pages/training/index.vue b/src/pages/training/index.vue
index fee365a..e765997 100644
--- a/src/pages/training/index.vue
+++ b/src/pages/training/index.vue
@@ -15,9 +15,9 @@ const trainingModeRouteMap = {
endurance: "endurance",
precision: "precision",
rhythm: "rhythm",
- strength: "power",
+ stability: "power",
};
-const unavailableTrainingIds = new Set(["strength"]);
+const unavailableTrainingIds = new Set(["stability"]);
// 训练项目卡片右侧主图标。
const trainingModeIconMap = {
base_bow:
@@ -39,21 +39,22 @@ const trainingModeTitleImageMap = {
"https://static.shelingxingqiu.com/shootmini/static/training-home/jingzhunxunlian.png",
rhythm:
"https://static.shelingxingqiu.com/shootmini/static/training-home/jiezouxunlian.png",
- strength:
+ stability:
"https://static.shelingxingqiu.com/shootmini/static/training-home/wendingxunlian.png",
};
const defaultWeekDays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
const defaultRadarDimensions = [
{ name: "基础", score: 0 },
{ name: "精准", score: 0 },
- { name: "力量", score: 0 },
+ { name: "稳定", score: 0 },
{ name: "节奏", score: 0 },
{ name: "耐力", score: 0 },
];
const radarDimensionTrainingIdMap = Object.freeze({
基础: "base",
精准: "precision",
- 力量: "strength",
+ 稳定: "stability",
+ 力量: "stability",
节奏: "rhythm",
耐力: "endurance",
});
@@ -66,7 +67,7 @@ const createDefaultTrainingData = () => ({
total_arrows: 0,
target_rate: 0,
ten_ring_count: 0,
- total_calories: 0,
+ average_ring: 0,
},
beat_percent: 0,
radar_max: 0,
@@ -137,7 +138,6 @@ const getLevelText = (item) => {
return `当前进度 LV${level} >`;
};
-// 接口字段暂时沿用 total_calories,页面按平均环数展示。
const getAverageRingValue = (value) => formatValue(value);
const getTrainingIcon = (item = {}) =>
@@ -289,7 +289,7 @@ const loadPersonalTrainingData = async () => {
total_arrows: result?.stats?.total_arrows ?? 0,
target_rate: result?.stats?.target_rate ?? 0,
ten_ring_count: result?.stats?.ten_ring_count ?? 0,
- total_calories: result?.stats?.total_calories ?? 0,
+ average_ring: result?.stats?.average_ring ?? 0,
},
beat_percent: result?.beat_percent ?? 0,
radar_max: result?.radar_max ?? 0,
@@ -458,7 +458,7 @@ onShow(async () => {
- {{ getAverageRingValue(trainingData.stats.total_calories) }}
+ {{ getAverageRingValue(trainingData.stats.average_ring) }}
环
@@ -531,19 +531,26 @@ onShow(async () => {
-
-
-
-
- 12箭练习
-
-
-
+
+
+
+ 无级别限制
+
+
+
+
{
width: 92rpx;
}
-.featured-card {
- position: relative;
- width: 100%;
- height: 130rpx;
- margin-top: 38rpx;
- border-radius: 16rpx;
- overflow: hidden;
-}
-
-.featured-card-bg {
- width: 100%;
-}
-
-.featured-card-mask {
- position: absolute;
- left: 0;
- top: 0;
- width: 278rpx;
- height: 130rpx;
-}
-
-.featured-card-copy {
- position: absolute;
- left: 174rpx;
- top: 60rpx;
- display: flex;
- flex-direction: column;
-}
-
-.featured-card-title {
- display: block;
- color: #895409;
- font-size: 34rpx;
- font-family: "AlimamaShuHeiTi-Bold", "PingFang SC", sans-serif;
- font-weight: 700;
- line-height: 42rpx;
-}
-
-.featured-card-subtitle {
- display: block;
- color: #895409;
- font-size: 20rpx;
- line-height: 28rpx;
-}
-
.mode-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -919,7 +881,7 @@ onShow(async () => {
box-shadow: inset 2rpx 2rpx 6rpx 0rpx rgba(255, 255, 255, 0.27);
border-radius: 16rpx;
border: 2rpx solid rgba(235, 184, 123, 0.5);
- background: rgba(0, 0, 0, 0.5);
+ /* background: rgba(0, 0, 0, 0.5); */
overflow: hidden;
}
diff --git a/src/pages/training/practise-one.vue b/src/pages/training/practise-one.vue
index 034bb67..5e0dfc9 100644
--- a/src/pages/training/practise-one.vue
+++ b/src/pages/training/practise-one.vue
@@ -92,6 +92,8 @@ const rhythmServerTimestamp = ref(0);
const rhythmFallbackWindowStart = ref(0);
const rhythmFallbackTimestamp = ref(0);
const rhythmHasActiveServerAnchor = ref(false);
+// 节奏训练目标箭数以服务端 total_arrows 为准;首帧缺失时用 arrows_left 初始化并保持稳定。
+const rhythmTargetArrows = ref(0);
// 服务端状态立即落到 practiceInfo,精准训练的目标区域单独延迟展示。
const visiblePrecisionTarget = ref({
randomBlock: 0,
@@ -416,7 +418,7 @@ const trainingCopy = computed(() => {
}
if (trainingType.value === "rhythm") {
- const targetArrows = getPositiveInteger(total.value);
+ const targetArrows = getPositiveInteger(rhythmTargetArrows.value);
const arrowsLeft = Math.min(
targetArrows,
Math.max(
@@ -494,6 +496,8 @@ const practiceInfoFields = [
"deltaTotalArrows",
"deltaAverageRing",
"deltaStability",
+ "tenRingCount",
+ "deltaTenRingCount",
"beforeExp",
"beforeLevel",
"currentExp",
@@ -522,6 +526,8 @@ const practiceResultFields = [
"deltaTotalArrows",
"deltaAverageRing",
"deltaStability",
+ "tenRingCount",
+ "deltaTenRingCount",
"beforeExp",
"beforeLevel",
"currentExp",
@@ -569,8 +575,31 @@ const cacheRhythmTrainingConfig = (message = {}) => {
}
};
+const cacheRhythmTargetArrows = (message = {}) => {
+ const messageTrainingType = String(
+ message.trainingType ?? message.training_type ?? trainingType.value
+ ).trim();
+ if (messageTrainingType !== "rhythm") return;
+
+ const totalArrows = getPositiveInteger(
+ message.totalArrows ?? message.total_arrows
+ );
+ if (totalArrows > 0) {
+ rhythmTargetArrows.value = totalArrows;
+ return;
+ }
+
+ // 兼容服务端首帧 total_arrows 暂为 0:只初始化一次,避免剩余数递减时分母跟着变化。
+ if (rhythmTargetArrows.value === 0) {
+ rhythmTargetArrows.value = getPositiveInteger(
+ message.arrowsLeft ?? message.arrows_left
+ );
+ }
+};
+
const syncPracticeInfo = (message = {}) => {
cacheRhythmTrainingConfig(message);
+ cacheRhythmTargetArrows(message);
const nextInfo = practiceInfoFields.reduce((result, field) => {
if (Object.prototype.hasOwnProperty.call(message, field)) {
result[field] = message[field];
@@ -1427,6 +1456,7 @@ async function onRetry() {
rhythmFallbackWindowStart.value = 0;
rhythmFallbackTimestamp.value = 0;
rhythmHasActiveServerAnchor.value = false;
+ rhythmTargetArrows.value = 0;
invalidateShotPresentations({ resetVisible: true });
start.value = false;
scores.value = [];
diff --git a/src/static/training-home/img_2.png b/src/static/training-home/img_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f7fa594d4b9b421447de8fad2335e5c18ee864d
GIT binary patch
literal 2096
zcmWlZ2UJs86URdnl%*=Dv_(XUf)vXqi&7#Tq+_EjN|B-{O~8VR3y5e4J)skbfJlds
zP(o+|h7x+DBNiZp00}7&@VmZq-n=_^?)>LBbMAQw_O|9Chhz>xAP^Bt3lm514g2#7
z@d4{)@>2=|;T5#EaW)0+?dUTEYj
zVwux*oCOS6uooNYq!RW5mOfm{nyvxSwRQxsteLuHEDYGqeiU%ov-KPOg|yGP%*iVD
zT*FFpGHb4Z(w@26lDgJ`+~_X`XI7h2K<;uQjI-EC`%<{l1ZU0GFE_zKh|-!$!Dq1M
zFsrzvH9|V)80mVN>=gd>wWnkalI!G*p2?8%|SF!U`$p3g_Wjc;8I%C
z>0{+!bFC|jvxr;9z(6f(cQ#o6QD{zCX-?Vwj@$WGN5#Dd*qjCI_Sb6qXxUn4)^bzw
zFU-3?NI3ZRM8yUX#hS^eFTtk?x=pU4_2jX?VHp#jR&Yr)Vj-=!07L;TeWHB5J9}pdw>46>HTsd#fdnuNay5Oj
zk~vkwoUR28(guow2-v3)Q9vI6fC2s)T5B4>1CW50(w4yl6T>F0_vTZ3@<7+iI5=~r
zZfm%dF;T&otOTP5YM_^mfnvZzAO8dZsGoBw?Fi5vmwW9GgT-03UB>F<>+5p80loL`5vU7-%V+L@kCM^1@2B`i6Q
zsuOHNOim1z4qP}KL69rdLEoG3d8H0@wMrW2NtHw5Z6tM`B9*lRcXUm&IYb-RvV~Yp
ziKBOTzaECaEKUu8Sx0s%xq4o{6ZcVXX*EJEA=AWM*Q$!j9l!F|#V2US&Cy5|LAT^6
zv?|ZlC`_6{Hks1tB}@F3{*2WV>6v45e%^HYpqa10e0D8CjhQH@GOu^woN<2o;J?}V
zjy+WExNa7lIJ_6)l~*B`tJk?IwX$#cj;boJgwoUHyP9)5)TYKyHm(iv^rT#{fOqNL
z^Cg$O`V%G3e*6%lIQ&g`aUAjd*wE+1uGjnTD>H~bO*f+44xGG}uHTW2aPK;^YA^Gg
z{xAc%<16RR3~BYi?8G2hd*lAzPDc5~^V_g-@w{&4p6&MfWs)6)2oej!pov1@g)$&ElI){pxbetv588_dN=4K2t!s;3o
z>#t{QL*suuZg#hPHEn*n=`z0r;(n_9a`0$Srq$@e&%u;fw1AeVHQI3(@+2n%;k3WU
zPII{?Ow_o<gmPNuxtm7a!_}k7k*P$MbM?`f9bJA;!FiP}1pd)SkT65{HZH#KdGO
zi0`$&{%y8d4il(`GP#
zr{DURAAxo%smy~HLpm_^52oX(Bp&Y~;m1B-VfY6xIxw)U=PKn!ZoW|0`}#>0@~pmi
zKA~nr_|&cYv@*Lq#kF_;AO-K+U8#HU*g_zN>wL+Piywk73~hNm6L*q%Z^kt5eWH-u
z@;6jL?U|teQKt~})tAuWWKsXycxzk50$razZDn<-p?d4}3ql+A498mCFS4-IDP)e+CHZboyt+37YL`+^iTBBs|CJ(TNlHfttfl+O1l6XhqAB06+0
zSAy@H6*oCs1nW@R2?Cgg|+W=&PKXuUt|9gm~sjW#R)HCM)_2-lH
literal 0
HcmV?d00001
diff --git a/src/static/training-home/ziyouxunlian.png b/src/static/training-home/ziyouxunlian.png
new file mode 100644
index 0000000000000000000000000000000000000000..94a52059e2631b86dc4634e0095dd074c6ef766b
GIT binary patch
literal 1790
zcmYjRX;f3!7Ctu#VG0Hi0YiaMBhH9|C}^J-1Q`U%5D2p&5oC-^f$&7VBCb9k76Jwc
zVIE~RP{1%>W+(x{0YOHw428C$t*BIO?|N^&wccLm?6bbJ_WJhs?H~J&lcTkg0!0A;
zpk!-f>4LoocByiBEdTlm(EtF7bh4*gVQ@IdZ>^d4v@B>OpE+B@*=ULHOm`bCWIZan
zgk~_7#L+8_aXp!yLpiKYf!kD7=*tID8!ZVdjoc??fgNe|0g+E%mRD<<>vUE4^NQf-
zl_4#BmsdZ;JT43TG4JAhUBpsD^iZDPV2we@~X@YGZ82J^E@>T#wMB
zU*yxqcYRzOIFRA?tUP!ukA;aJ%JIc`u(Q@2_o6ZklZ^@(3w03>zyB69HCDv#NO$YX
zU_34f=*je$t_posAKiJ+txxFnqACm{!HORhu?Mofy9DliLhq-gmoZ2GZ9P`RnkWhA
z6Z&AB%Rg{2omlrlkx#$KcfFZ6Q5-N+&B2C-(JqQ3TT)%51^%eOeXfQxoa=|l#$3$S
za^|Wz?Pkjr*wC-WxH!53>Hmi!2K1!Ir6>OPnQ0_FDAoNBQj^-bNGMW6N+L^9Qk@kS
z;^?o^6ly?hqqH_L_6-V?&q;sGyAc)a-z^;+Y<}>d_HHQsOiqfQud9{b@L*q=h$d}L
zjdC7Ds|6`nqjNh`j*%D70YK=swKS)D^o~w$FjUPoiJQ=
z+x7W$Q^m}5P1j|DWIu93tdV?Mw3&pviH<8v-=Eie!#kcW$OCL5y#8+E&K>jI13obA
zxS7a?##!k6#?Ua)#>=y-s~`G690L(kvhXhu+5YA}elx!2JPfafBB#NWyFALqJFV9{
z`38WaNn@$e$nGakh{z;Lkg=~Ps_MhMnb+^*xJWW?;7^3Rzpz$dcYE1~qpoOXs@}bu
zzXGi9-@ku$>;3yTpFXG3@MeH}wPQYi&tmxD=DkM0U8%g=kc4>tD314mn7`;M
z1ck^Byk$7VsRR4asw3!YARIsfgn2tTIB87-)Z-E~
z0Ko@l;Kx6n0e+TbhnHHye_G*X?)G$%m9iMk#ri=#iOi0Bjpb
zII=;W6n=9AUfDmhoQSZuodc8-nx~T}Og^5L3mpO#UX-AFANdZAKGj^9fRIGB&lKd2
zAu~_m%~T)@P8k7~X5l0kp4&KrqozQoizRGAXRa&n
z4@3{T?fwJ4AV!m^0xpn%;^O32S>6eF*VjRt2R8EqQLw23Yv6kbhK^diWajL)Mg3d#
zivyW~{$vGBJ^|hl>z@LB*lY8gN=Dd0T(_pOY*9)jKNPY9Rt1t
zv>^C5{A}3H&EI#UQMx)}nXm*1g_g7m!9it8gqB6}#3`uouE#$Dm4vUqR@)TGT5cc3
zZRsz8eW6C*kZD(f5a?fp^PjwKIf(D7zq*DT&K%jRz^h!|Ii@8l*`pwAdl1kkFq8>n
zyqS#`{*{=(P?HHp+S?PR=5Faal}!X4_J`9!>+X?Q`a=x
literal 0
HcmV?d00001
diff --git a/src/utils/match.min.js b/src/utils/match.min.js
index b0a391e..96f5137 100644
--- a/src/utils/match.min.js
+++ b/src/utils/match.min.js
@@ -1,4 +1,4 @@
/* eslint-disable */
import * as $protobuf from "protobufjs";
-const $root=$protobuf.Root.create({"nested":{"rpc":{"ServerMessageType":{"SERVER_MSG_UNKNOWN":0,"SERVER_MSG_MATCH_READY":1,"SERVER_MSG_MATCH_START":2,"SERVER_MSG_NOW_YOU":3,"SERVER_MSG_SHOT":4,"SERVER_MSG_NEW_ROUND":5,"SERVER_MSG_MATCH_END":6,"SERVER_MSG_TIMEOUT":7,"SERVER_MSG_CHECK":8,"SERVER_MSG_RAND":9,"SERVER_MSG_NOT_ENOUGH_DISTANCE":10,"SERVER_MSG_PLAYER_LEFT":11,"SERVER_MSG_HEARTBEAT":12,"SERVER_MSG_PRACTICE_END":13,"SERVER_MSG_SYNC_PRACTICE_INFO":14,"SERVER_MSG_SYNC_MATCH_INFO":15},"ClientMessageType":{"CLIENT_MSG_UNKNOWN":0,"CLIENT_MSG_HEARTBEAT_ACK":1,"CLIENT_MSG_SHOOT_DATA":2,"CLIENT_MSG_ACK":3,"CLIENT_MSG_LEAVE":4,"CLIENT_MSG_SYNC_PRACTICE_INFO":5,"CLIENT_MSG_SYNC_MATCH_INFO":6},"MatchStatus":{"MATCH_STATUS_READY":0,"MATCH_STATUS_STARTED":1,"MATCH_STATUS_END":2,"MATCH_STATUS_TIMEOUT":3,"MATCH_STATUS_UNEXPECTEDLY":4},"MatchPlayerStatus":{"MATCH_PLAYER_STATUS_READY":0,"MATCH_PLAYER_STATUS_STARTED":1,"MATCH_PLAYER_STATUS_END":2},"MatchShoot":{"fields":{"player_id":{"type":"int64","id":1},"status":{"type":"int32","id":2},"x":{"type":"float","id":3},"y":{"type":"float","id":4},"ring":{"type":"int32","id":5},"ring_x":{"type":"bool","id":6},"angle":{"type":"float","id":7},"distance":{"type":"float","id":8},"three_consecutive_10_rings":{"type":"bool","id":9},"ok":{"type":"bool","id":10},"target_ok":{"type":"bool","id":11}}},"MatchShootList":{"fields":{"items":{"type":"MatchShoot","id":1,"rule":"repeated"}}},"RoundScore":{"fields":{"total_ring":{"type":"int32","id":1},"score":{"type":"int32","id":2},"if_win":{"type":"bool","id":3}}},"MatchRound":{"fields":{"shoots":{"type":"MatchShootList","id":1,"keytype":"int64"},"scores":{"type":"RoundScore","id":2,"keytype":"int32"},"round":{"type":"int32","id":3},"if_gold":{"type":"bool","id":4},"status":{"type":"int32","id":5},"gold_round":{"type":"int32","id":6}}},"PlayerMatchResult":{"fields":{"total_ring":{"type":"int32","id":1},"user_id":{"type":"int64","id":2},"ten_ring_count":{"type":"int32","id":3},"average_ring":{"type":"float","id":4}}},"PlayerFull":{"fields":{"id":{"type":"int64","id":1},"name":{"type":"string","id":2},"avatar":{"type":"string","id":3},"exp":{"type":"int32","id":4},"score":{"type":"int32","id":5},"level":{"type":"int32","id":6},"before_level":{"type":"int32","id":7},"before_exp":{"type":"int32","id":8},"current_exp":{"type":"int32","id":9},"upgrade_exp":{"type":"int32","id":10},"active":{"type":"int32","id":11},"device_id":{"type":"string","id":12},"s_vip":{"type":"bool","id":13},"vip":{"type":"bool","id":14},"player_match_result":{"type":"PlayerMatchResult","id":15},"rank_lvl":{"type":"int32","id":16},"rank_name":{"type":"string","id":17},"rank_icon":{"type":"string","id":18}}},"TeamInfo":{"fields":{"players":{"type":"PlayerFull","id":1,"rule":"repeated"},"id":{"type":"int32","id":2},"name":{"type":"string","id":3},"score":{"type":"int32","id":4}}},"CurrentShoot":{"fields":{"round":{"type":"int32","id":1},"round_id":{"type":"int64","id":2},"index":{"type":"int32","id":3},"start_time":{"type":"int64","id":4},"player_id":{"type":"int64","id":5},"gold_round":{"type":"bool","id":6},"start_time_text":{"type":"string","id":7},"my_index":{"type":"int32","id":8},"index_map":{"type":"int32","id":9,"keytype":"int64"},"ack_time":{"type":"int64","id":10}}},"ShootData":{"fields":{"x":{"type":"float","id":1},"y":{"type":"float","id":2},"r":{"type":"float","id":3},"dst":{"type":"float","id":4},"m":{"type":"string","id":5},"adc":{"type":"float","id":6},"device_id":{"type":"string","id":7},"shoot_id":{"type":"string","id":8},"three_consecutive_10_rings":{"type":"bool","id":9},"target_ok":{"type":"bool","id":10}}},"PracticeInfo":{"fields":{"id":{"type":"int64","id":1},"user_id":{"type":"int64","id":2},"status":{"type":"int32","id":3},"status_text":{"type":"string","id":4},"start_time":{"type":"int64","id":5},"target_type":{"type":"int32","id":6},"vip":{"type":"bool","id":7},"s_vip":{"type":"bool","id":8},"device_id":{"type":"string","id":9},"shoot_data":{"type":"MatchShoot","id":10},"details":{"type":"MatchShoot","id":11,"rule":"repeated"},"training_type":{"type":"string","id":12},"difficulty_level":{"type":"int32","id":13},"hit_req":{"type":"int32","id":14},"arrows_left":{"type":"int32","id":15},"target_arrows":{"type":"int32","id":16},"target_rings":{"type":"int32","id":17},"current_arrows":{"type":"int32","id":18},"current_rings":{"type":"int32","id":19},"blocks":{"type":"int32","id":20},"random_block":{"type":"int32","id":21},"random_ring_area":{"type":"int32","id":22},"score_slot":{"type":"int32","id":44},"current_energy":{"type":"int32","id":45},"energy_cost_per_sec":{"type":"int32","id":46},"energy_per_hit":{"type":"int32","id":47},"energy_req_percent":{"type":"int32","id":48},"round_time":{"type":"int32","id":50},"shoot_time":{"type":"int32","id":53},"shoot_window_start":{"type":"int64","id":51},"in_shoot_window":{"type":"bool","id":52},"time_limit":{"type":"int32","id":23},"completed":{"type":"bool","id":24},"total_arrows":{"type":"int32","id":25},"duration":{"type":"int32","id":26},"average_ring":{"type":"float","id":27},"stability":{"type":"float","id":28},"max_combo":{"type":"int32","id":29},"total_hits":{"type":"int32","id":30},"delta_total_hits":{"type":"int32","id":31},"delta_duration":{"type":"int32","id":32},"delta_max_combo":{"type":"int32","id":33},"delta_total_rings":{"type":"int32","id":34},"delta_total_arrows":{"type":"int32","id":35},"delta_average_ring":{"type":"float","id":36},"delta_stability":{"type":"float","id":37},"delta_current_energy":{"type":"int32","id":49},"before_exp":{"type":"int32","id":38},"before_level":{"type":"int32","id":39},"current_exp":{"type":"int32","id":40},"level":{"type":"int32","id":41},"upgrade_exp":{"type":"int32","id":42},"calories":{"type":"double","id":43}}},"MatchInfo":{"fields":{"match_id":{"type":"string","id":1},"create_time":{"type":"int64","id":2},"start_time":{"type":"int64","id":3},"server_time":{"type":"int64","id":4},"shoot_time":{"type":"int32","id":5},"shoot_number":{"type":"int32","id":6},"ready_time":{"type":"int32","id":7},"way":{"type":"int32","id":8},"mode":{"type":"int32","id":9},"status":{"type":"MatchStatus","id":10},"status_text":{"type":"string","id":11},"rounds":{"type":"MatchRound","id":12,"rule":"repeated"},"teams":{"type":"TeamInfo","id":13,"keytype":"int32"},"current":{"type":"CurrentShoot","id":14},"next":{"type":"CurrentShoot","id":15},"shoot_data":{"type":"MatchShoot","id":16},"win_team":{"type":"int32","id":17},"mvp":{"type":"PlayerFull","id":18},"room_id":{"type":"string","id":19},"result_list":{"type":"PlayerMatchResult","id":20,"rule":"repeated"},"timeout_time":{"type":"int64","id":21},"target_type":{"type":"int32","id":22},"event_type":{"type":"int32","id":23},"timeout":{"type":"int32","id":24},"server_addr":{"type":"string","id":25},"countdown_start_time":{"type":"int64","id":26}}},"ServerMessage":{"fields":{"type":{"type":"ServerMessageType","id":1},"match_id":{"type":"string","id":2},"timestamp":{"type":"int64","id":3},"match_info":{"type":"MatchInfo","id":4},"shoot_data":{"type":"ShootData","id":5},"practice_info":{"type":"PracticeInfo","id":6},"sequence":{"type":"int64","id":7}}},"ClientMessage":{"fields":{"type":{"type":"ClientMessageType","id":1},"match_id":{"type":"string","id":2},"user_id":{"type":"int64","id":3},"sequence":{"type":"int64","id":4},"data":{"type":"bytes","id":5}}}}}});
+const $root=$protobuf.Root.create({"nested":{"rpc":{"ServerMessageType":{"SERVER_MSG_UNKNOWN":0,"SERVER_MSG_MATCH_READY":1,"SERVER_MSG_MATCH_START":2,"SERVER_MSG_NOW_YOU":3,"SERVER_MSG_SHOT":4,"SERVER_MSG_NEW_ROUND":5,"SERVER_MSG_MATCH_END":6,"SERVER_MSG_TIMEOUT":7,"SERVER_MSG_CHECK":8,"SERVER_MSG_RAND":9,"SERVER_MSG_NOT_ENOUGH_DISTANCE":10,"SERVER_MSG_PLAYER_LEFT":11,"SERVER_MSG_HEARTBEAT":12,"SERVER_MSG_PRACTICE_END":13,"SERVER_MSG_SYNC_PRACTICE_INFO":14,"SERVER_MSG_SYNC_MATCH_INFO":15},"ClientMessageType":{"CLIENT_MSG_UNKNOWN":0,"CLIENT_MSG_HEARTBEAT_ACK":1,"CLIENT_MSG_SHOOT_DATA":2,"CLIENT_MSG_ACK":3,"CLIENT_MSG_LEAVE":4,"CLIENT_MSG_SYNC_PRACTICE_INFO":5,"CLIENT_MSG_SYNC_MATCH_INFO":6},"MatchStatus":{"MATCH_STATUS_READY":0,"MATCH_STATUS_STARTED":1,"MATCH_STATUS_END":2,"MATCH_STATUS_TIMEOUT":3,"MATCH_STATUS_UNEXPECTEDLY":4},"MatchPlayerStatus":{"MATCH_PLAYER_STATUS_READY":0,"MATCH_PLAYER_STATUS_STARTED":1,"MATCH_PLAYER_STATUS_END":2},"MatchShoot":{"fields":{"player_id":{"type":"int64","id":1},"status":{"type":"int32","id":2},"x":{"type":"float","id":3},"y":{"type":"float","id":4},"ring":{"type":"int32","id":5},"ring_x":{"type":"bool","id":6},"angle":{"type":"float","id":7},"distance":{"type":"float","id":8},"three_consecutive_10_rings":{"type":"bool","id":9},"ok":{"type":"bool","id":10},"target_ok":{"type":"bool","id":11}}},"MatchShootList":{"fields":{"items":{"type":"MatchShoot","id":1,"rule":"repeated"}}},"RoundScore":{"fields":{"total_ring":{"type":"int32","id":1},"score":{"type":"int32","id":2},"if_win":{"type":"bool","id":3}}},"MatchRound":{"fields":{"shoots":{"type":"MatchShootList","id":1,"keytype":"int64"},"scores":{"type":"RoundScore","id":2,"keytype":"int32"},"round":{"type":"int32","id":3},"if_gold":{"type":"bool","id":4},"status":{"type":"int32","id":5},"gold_round":{"type":"int32","id":6}}},"PlayerMatchResult":{"fields":{"total_ring":{"type":"int32","id":1},"user_id":{"type":"int64","id":2},"ten_ring_count":{"type":"int32","id":3},"average_ring":{"type":"float","id":4}}},"PlayerFull":{"fields":{"id":{"type":"int64","id":1},"name":{"type":"string","id":2},"avatar":{"type":"string","id":3},"exp":{"type":"int32","id":4},"score":{"type":"int32","id":5},"level":{"type":"int32","id":6},"before_level":{"type":"int32","id":7},"before_exp":{"type":"int32","id":8},"current_exp":{"type":"int32","id":9},"upgrade_exp":{"type":"int32","id":10},"active":{"type":"int32","id":11},"device_id":{"type":"string","id":12},"s_vip":{"type":"bool","id":13},"vip":{"type":"bool","id":14},"player_match_result":{"type":"PlayerMatchResult","id":15},"rank_lvl":{"type":"int32","id":16},"rank_name":{"type":"string","id":17},"rank_icon":{"type":"string","id":18}}},"TeamInfo":{"fields":{"players":{"type":"PlayerFull","id":1,"rule":"repeated"},"id":{"type":"int32","id":2},"name":{"type":"string","id":3},"score":{"type":"int32","id":4}}},"CurrentShoot":{"fields":{"round":{"type":"int32","id":1},"round_id":{"type":"int64","id":2},"index":{"type":"int32","id":3},"start_time":{"type":"int64","id":4},"player_id":{"type":"int64","id":5},"gold_round":{"type":"bool","id":6},"start_time_text":{"type":"string","id":7},"my_index":{"type":"int32","id":8},"index_map":{"type":"int32","id":9,"keytype":"int64"},"ack_time":{"type":"int64","id":10}}},"ShootData":{"fields":{"x":{"type":"float","id":1},"y":{"type":"float","id":2},"r":{"type":"float","id":3},"dst":{"type":"float","id":4},"m":{"type":"string","id":5},"adc":{"type":"float","id":6},"device_id":{"type":"string","id":7},"shoot_id":{"type":"string","id":8},"three_consecutive_10_rings":{"type":"bool","id":9},"target_ok":{"type":"bool","id":10}}},"PracticeInfo":{"fields":{"id":{"type":"int64","id":1},"user_id":{"type":"int64","id":2},"status":{"type":"int32","id":3},"status_text":{"type":"string","id":4},"start_time":{"type":"int64","id":5},"target_type":{"type":"int32","id":6},"vip":{"type":"bool","id":7},"s_vip":{"type":"bool","id":8},"device_id":{"type":"string","id":9},"shoot_data":{"type":"MatchShoot","id":10},"details":{"type":"MatchShoot","id":11,"rule":"repeated"},"training_type":{"type":"string","id":12},"difficulty_level":{"type":"int32","id":13},"hit_req":{"type":"int32","id":14},"arrows_left":{"type":"int32","id":15},"target_arrows":{"type":"int32","id":16},"target_rings":{"type":"int32","id":17},"current_arrows":{"type":"int32","id":18},"current_rings":{"type":"int32","id":19},"blocks":{"type":"int32","id":20},"random_block":{"type":"int32","id":21},"random_ring_area":{"type":"int32","id":22},"score_slot":{"type":"int32","id":44},"current_energy":{"type":"int32","id":45},"energy_cost_per_sec":{"type":"int32","id":46},"energy_per_hit":{"type":"int32","id":47},"energy_req_percent":{"type":"int32","id":48},"round_time":{"type":"int32","id":50},"shoot_time":{"type":"int32","id":53},"shoot_window_start":{"type":"int64","id":51},"in_shoot_window":{"type":"bool","id":52},"time_limit":{"type":"int32","id":23},"completed":{"type":"bool","id":24},"total_arrows":{"type":"int32","id":25},"duration":{"type":"int32","id":26},"average_ring":{"type":"float","id":27},"stability":{"type":"float","id":28},"max_combo":{"type":"int32","id":29},"total_hits":{"type":"int32","id":30},"delta_total_hits":{"type":"int32","id":31},"delta_duration":{"type":"int32","id":32},"delta_max_combo":{"type":"int32","id":33},"delta_total_rings":{"type":"int32","id":34},"delta_total_arrows":{"type":"int32","id":35},"delta_average_ring":{"type":"float","id":36},"delta_stability":{"type":"float","id":37},"delta_current_energy":{"type":"int32","id":49},"ten_ring_count":{"type":"int32","id":54},"delta_ten_ring_count":{"type":"int32","id":55},"before_exp":{"type":"int32","id":38},"before_level":{"type":"int32","id":39},"current_exp":{"type":"int32","id":40},"level":{"type":"int32","id":41},"upgrade_exp":{"type":"int32","id":42},"calories":{"type":"double","id":43}}},"MatchInfo":{"fields":{"match_id":{"type":"string","id":1},"create_time":{"type":"int64","id":2},"start_time":{"type":"int64","id":3},"server_time":{"type":"int64","id":4},"shoot_time":{"type":"int32","id":5},"shoot_number":{"type":"int32","id":6},"ready_time":{"type":"int32","id":7},"way":{"type":"int32","id":8},"mode":{"type":"int32","id":9},"status":{"type":"MatchStatus","id":10},"status_text":{"type":"string","id":11},"rounds":{"type":"MatchRound","id":12,"rule":"repeated"},"teams":{"type":"TeamInfo","id":13,"keytype":"int32"},"current":{"type":"CurrentShoot","id":14},"next":{"type":"CurrentShoot","id":15},"shoot_data":{"type":"MatchShoot","id":16},"win_team":{"type":"int32","id":17},"mvp":{"type":"PlayerFull","id":18},"room_id":{"type":"string","id":19},"result_list":{"type":"PlayerMatchResult","id":20,"rule":"repeated"},"timeout_time":{"type":"int64","id":21},"target_type":{"type":"int32","id":22},"event_type":{"type":"int32","id":23},"timeout":{"type":"int32","id":24},"server_addr":{"type":"string","id":25},"countdown_start_time":{"type":"int64","id":26}}},"ServerMessage":{"fields":{"type":{"type":"ServerMessageType","id":1},"match_id":{"type":"string","id":2},"timestamp":{"type":"int64","id":3},"match_info":{"type":"MatchInfo","id":4},"shoot_data":{"type":"ShootData","id":5},"practice_info":{"type":"PracticeInfo","id":6},"sequence":{"type":"int64","id":7}}},"ClientMessage":{"fields":{"type":{"type":"ClientMessageType","id":1},"match_id":{"type":"string","id":2},"user_id":{"type":"int64","id":3},"sequence":{"type":"int64","id":4},"data":{"type":"bytes","id":5}}}}}});
export default $root;
diff --git a/src/utils/matchProtocol.js b/src/utils/matchProtocol.js
index 1b36c67..7f57cb8 100644
--- a/src/utils/matchProtocol.js
+++ b/src/utils/matchProtocol.js
@@ -7,8 +7,8 @@ const { Reader, Writer } = protobuf;
// 所以这里使用 minimal Reader/Writer 做静态字段解码和客户端消息编码。
//
// 此区块由 scripts/generate-match-schema.mjs 自动生成,请勿手动修改。
-// 来源:src/utils/match.min.js(sha256: a7ab92ae43e405e7)
-// 协议命名空间:rpc;消息数:12;字段数:153
+// 来源:src/utils/match.min.js(sha256: fbf97fd3d08ae314)
+// 协议命名空间:rpc;消息数:12;字段数:155
export const ServerMessageType = {
SERVER_MSG_UNKNOWN: 0,
@@ -196,6 +196,8 @@ const SCHEMAS = {
51: { name: "shoot_window_start", kind: "int64" },
52: { name: "in_shoot_window", kind: "bool" },
53: { name: "shoot_time", kind: "int32" },
+ 54: { name: "ten_ring_count", kind: "int32" },
+ 55: { name: "delta_ten_ring_count", kind: "int32" },
},
MatchInfo: {
1: { name: "match_id", kind: "string" },