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" },