From 7fdebe3ec7897517cc9bab428b00922e6f9b4b2a Mon Sep 17 00:00:00 2001 From: Horldsence Date: Wed, 14 Oct 2026 19:37:59 +0800 Subject: [PATCH] =?UTF-8?q?desktop:=20=E4=BF=AE=E4=B8=A4=E5=A4=84=E5=B0=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=88=E9=A2=84=E8=A7=88=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E5=91=BD=E4=B8=AD=E8=8A=82=E5=A5=8F=E3=80=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=9D=A2=E6=9D=BF=E9=87=8C=E6=BC=8F=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=E7=9A=84=20**=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 浏览器预览的掉血脚本写成"打空就重置,然后按 to >= from 判断"——两块板子都打空之后 每一次都是重置,命中再也不出现,盯着界面等闪红会等到超时。现在打空那一拍只重置、 其余每一拍都出命中。 - 设置面板里"偏移存的是**画面比例**"直接写进了 JSX,`**` 原样显示出来了。JSX 不渲染 Markdown,改成 。 顺带把界面截图落到 desktop/screenshots/(不进仓库):这个环境里 Page.captureScreenshot 不可用(空白页也超时),改用 Page.printToPDF + sips 转 PNG;打印路径不渲染 box-shadow 的模糊半径(会变成实心块),所以 .dev/shoot.js 在拍之前把它去掉。 --- desktop/.gitignore | 5 +++-- desktop/src/components/SettingsPanel.tsx | 4 ++-- desktop/src/lib/dev-preview.ts | 18 ++++++++++++------ desktop/src/styles/global.css | 7 +++++++ 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/desktop/.gitignore b/desktop/.gitignore index 88f22c9..1a9b8e4 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -11,6 +11,7 @@ dist/ # Tauri 生成的权限 schema(构建产物,随 tauri-build 版本变化)。 /src-tauri/gen/schemas/ -# 本机开发用的状态:dev 配置(里面有密码哈希)与演示/录制的输出、界面截图。 +# 本机开发用的状态:dev 配置(里面有密码哈希)、演示/录制的输出、界面截图。 +# 截图不是源码,它们随界面一起变;要看就去 `pnpm app` 跑起来,或者自己跑 .dev/shoot.js。 /.dev/ -/.shots/ +/screenshots/ diff --git a/desktop/src/components/SettingsPanel.tsx b/desktop/src/components/SettingsPanel.tsx index 087a469..c89100d 100644 --- a/desktop/src/components/SettingsPanel.tsx +++ b/desktop/src/components/SettingsPanel.tsx @@ -682,8 +682,8 @@ function Calibration({ />

- 摄像头与枪管不同轴时用这里把瞄点挪到弹着点上。偏移存的是**画面比例**,所以换分辨率、 - 换窗口大小都不影响它。 + 摄像头与枪管不同轴时用这里把瞄点挪到弹着点上。偏移存的是画面比例 + ,所以换分辨率、换窗口大小都不影响它。

diff --git a/desktop/src/lib/dev-preview.ts b/desktop/src/lib/dev-preview.ts index a032459..110505d 100644 --- a/desktop/src/lib/dev-preview.ts +++ b/desktop/src/lib/dev-preview.ts @@ -376,19 +376,25 @@ export function startPreview(client: StreamClient, emit: (msg: WireMsg) => void) }, 50); // 掉血:每 3 秒一次,轮流打两块板子,顺便把命中反馈也验证了。 + // + // 打空的那一拍只做重置、不出命中("已击毁"的状态要真的能看到),其余每一拍都出一次 + // 命中。早先的写法是 `to = from === 0 ? 100 : ...` 然后按 `to >= from` 判断——那样一旦 + // 两块都打空,之后每次都是重置,命中就再也不会出现,盯着界面等闪红会等到超时。 let tick = 0; const hitTimer = window.setInterval(() => { tick += 1; const team = tick % 2; - const damage = 3 + ((tick * 7) % 20); + + if (state.hp[team] === 0) { + state.hp[team] = 100; + return; + } + const from = state.hp[team]; - const to = from === 0 ? 100 : Math.max(0, from - damage); - - // 打空之后重置成满血:界面上"已击毁"的状态要真的能看到。 + const damage = 3 + ((tick * 7) % 20); + const to = Math.max(0, from - damage); state.hp[team] = to; - if (to >= from) return; - emit({ t: "hit", board: team === 0 ? ARMOR_A : ARMOR_B, diff --git a/desktop/src/styles/global.css b/desktop/src/styles/global.css index d39be91..fcf2ebe 100644 --- a/desktop/src/styles/global.css +++ b/desktop/src/styles/global.css @@ -1192,3 +1192,10 @@ code { font-size: 12px; z-index: 30; } + +/* 正文里需要强调的词。JSX 里的 `**` 不会被渲染成粗体——它会原样显示出来, + 而这个界面是给现场看的,不该出现源码的记号。 */ +.em { + color: var(--fg); + font-weight: 600; +}