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;
+}