From 1796d4aa4087f1686b21b80c3d15f5c3eb38a9cf Mon Sep 17 00:00:00 2001 From: zhangyibo95 <690096405@qq.com> Date: Fri, 10 Jul 2026 18:13:41 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=88=BF=E9=97=B4=E6=96=B0=E5=A2=9Evip?= =?UTF-8?q?=E7=89=B9=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BowTarget.vue | 16 +++-- src/components/PlayerScore.vue | 2 +- src/components/PlayerSeats.vue | 36 ++++++++-- src/pages/battle-room.vue | 128 +++++++++++++++++++++++++-------- src/pages/melee-battle.vue | 1 + 5 files changed, 143 insertions(+), 40 deletions(-) diff --git a/src/components/BowTarget.vue b/src/components/BowTarget.vue index e7558a9..7da471d 100644 --- a/src/components/BowTarget.vue +++ b/src/components/BowTarget.vue @@ -43,6 +43,10 @@ const props = defineProps({ type: String, default: "solo", // solo 单排,team 双排 }, + missAsZero: { + type: Boolean, + default: false, + }, stop: { type: Boolean, default: false, @@ -78,6 +82,12 @@ const instance = getCurrentInstance(); const ROUND_TIP_OFFSET_Y = -32; const EXPERIENCE_TIP_OFFSET_Y = -68; +function getRoundText(shot) { + if (shot?.ringX) return "X环"; + if (shot?.ring) return `${shot.ring}环`; + return props.missAsZero ? "0环" : "未上靶"; +} + function buildShotEffectKey(team, shot, index) { return [ team, @@ -433,8 +443,7 @@ onBeforeUnmount(() => { v-if="latestOne" class="round-tip fade-in-out" :style="getRoundTipStyle(latestOne)" - >{{ latestOne.ringX ? "X" : latestOne.ring || "未上靶" - }} + >{{ getRoundText(latestOne) }} {{ bluelatestOne.ringX ? "X" : bluelatestOne.ring || "未上靶" - }}{{ getRoundText(bluelatestOne) }} { if (!arrow) return "-"; if (arrow.ringX && arrow.ring) return "X环"; - return arrow.ring ? `${arrow.ring}环` : "-"; + return `${Number(arrow.ring) || 0}环`; }; const isMember = (player = {}) => player.vip === true || player.sVip === true; diff --git a/src/components/PlayerSeats.vue b/src/components/PlayerSeats.vue index 5b029f8..5c38d56 100644 --- a/src/components/PlayerSeats.vue +++ b/src/components/PlayerSeats.vue @@ -20,6 +20,15 @@ const props = defineProps({ default: false, }, }); + +const isMember = (player = {}) => player.vip === true || player.sVip === true; + +const getMemberNicknameClass = (player = {}) => [ + "member-nickname", + player.vip === true && player.sVip !== true ? "member-nickname--vip" : "", + player.sVip === true ? "member-nickname--svip" : "", +]; + const seats = new Array(props.total).fill(1); @@ -40,10 +49,27 @@ const seats = new Array(props.total).fill(1); - {{ - players[index].name - }} - 虚位以待 + + {{ players[index].name }} + + {{ players[index].name }} + + + + {{ players[index].name }} + + + 虚位以待 + 管理员