From a8aa2545a9f75328f1f12cfcefe8ac0266363bdd Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 1 Oct 2026 23:58:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?iter9-exit=20T17=E6=89=B91:=2006=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E4=B8=A4=E6=9D=A1=E5=AE=A1=E7=BE=8E=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=EF=BC=88=E7=AC=AC=E4=B8=80=E5=85=B3=E6=95=B0=E5=AD=97=E7=9B=B4?= =?UTF-8?q?=E7=94=BB=E8=A7=82=E6=84=9F/=E9=AB=98=E5=A2=99=E5=A2=99?= =?UTF-8?q?=E5=BA=95=E9=BB=91=E7=BA=BF=E8=A7=82=E6=84=9F=E2=80=94=E2=80=94?= =?UTF-8?q?=E7=94=A8=E6=88=B7T17=E7=9B=AE=E6=A3=80=E4=BD=93=E6=84=9F?= =?UTF-8?q?=EF=BC=8C=E7=BA=AF=E8=A7=82=E6=84=9F=E8=BD=B4=E6=8E=92M-4?= =?UTF-8?q?=E5=90=8E=E6=8E=92=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/06-待办清单.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 47330f4f..33c46bef 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -353,6 +353,22 @@ ### HUD框架 +#### 第一关亮墨数字直画观感优化(2026-10-01 T17 目检体感登记) + +**现状**:迭代 9 T4 数字承载切换后第一关=亮墨三档直画(白亮字直接印棕色地板、无色牌垫底),机制可读性过闸(用户实机确认三档冷暖可分、凑近与离屏均可读);同日 T17 目检体感「表现和描述一样,但非常难看」——直画字与地板的组合观感待优化。第二/三关米色小牌形态未获同类反馈。 + +**归属**:呈现优化批(与高墙墙底阴线观感同批裁量;排 M-4 后排,不卡迭代 9 出口) + +**状态**:待办(2026-10-01 登记;机制/可读轴零触碰,纯观感轴) + +#### 高墙墙底细阴线观感优化(2026-10-01 T17 目检体感登记) + +**现状**:迭代 9 T3 棋盘渲染落码后高墙承接机制过闸(墙顶原亮度直贴/交界无边框/墙底一条细阴线压格线);2026-10-01 用户 T17 目检实机体感「有,但是现在放个黑线很难看」——墙底阴线的颜色/粗细/有无待优化。 + +**归属**:呈现优化批(与数字直画观感同批;排 M-4 后排,不卡迭代 9 出口) + +**状态**:待办(2026-10-01 登记;机制轴零触碰,纯观感轴) + #### 封印旗纹理落位(棋盘格 tex_flag 槽,2026-09-29 打磨包降级登记) **现状**:棋盘旗格现以文字字形「旗」(朱墨)承载——`board_cell_unit.gd` tex_flag 槽位 2026-09-24 起预留恒空。迭代 8 打磨包卡⑤「封印旗纹理落位退役文字占位」开工核证:`game/assets/art/`(board/ui 全目录 186 文件在盘)无旗纹理产物,素材自产批未生产该件(素材不入 git 口径,非缺检漏装)。按计划书 §5.1 T8 降级案执行:**维持文字占位 + 本条债务登记**,槽位接线条件=旗纹理自产入盘后接 tex_flag(程序化槽位零改码可挂)。 From a3efce250ad8eb74c7e81c5425f94f8d32942f8c Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Fri, 2 Oct 2026 02:45:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?T17=E4=B8=89=E4=BF=AE=E6=89=B9:=20=E2=91=A0?= =?UTF-8?q?=E6=97=97=E6=98=BE=E7=A4=BA=E5=9B=9E=E5=BD=92=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=88tex=5Fflag=E6=97=A0setter=E4=B8=8D=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=87=8D=E7=BB=98=E2=80=94=E2=80=94glyph=E6=97=B6=E4=BB=A3?= =?UTF-8?q?=E6=97=97=E9=9D=A0glyph=20setter=E9=87=8D=E7=BB=98=EF=BC=8CT13?= =?UTF-8?q?=E6=8D=A2tex=E6=A7=BD=E5=90=8E=E6=8F=92=E6=97=97=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E9=9B=B6=E9=87=8D=E7=BB=98=3D=E6=97=97=E6=8F=92?= =?UTF-8?q?=E4=B8=8A=E4=B8=8D=E6=98=BE=E7=A4=BA=EF=BC=9B=E8=A1=A5setter?= =?UTF-8?q?=E5=90=8C=E5=80=BC=E4=B8=8D=E9=87=8D=E7=BB=98+paint=E5=85=A8?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=B8=85=E6=AE=8B=E7=95=99=E9=98=B2=E6=8C=96?= =?UTF-8?q?=E5=BC=80=E5=90=8E=E6=97=97=E5=8D=B0=E6=AE=8B=E7=95=99=E5=B7=B2?= =?UTF-8?q?=E5=BC=80=E6=A0=BC=EF=BC=89=E2=91=A1=E4=BC=A4=E5=AE=B3=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E5=A2=9E=E5=BC=BA20=E2=86=9226px(crit=2032)/=E9=A9=BB?= =?UTF-8?q?=E7=95=990.7=E2=86=921.1s/=E6=8F=8F=E8=BE=B94=E2=86=926?= =?UTF-8?q?=E2=80=94=E2=80=94=E7=94=A8=E6=88=B7=E5=AE=9E=E6=9C=BA=E5=AE=8C?= =?UTF-8?q?=E5=85=A8=E6=B2=A1=E7=9C=8B=E5=88=B0=E4=BC=A4=E5=AE=B3=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E2=91=A2=E7=BB=93=E7=AE=97=E8=A7=86=E8=A7=89=E6=9C=9F?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E6=8E=92=E6=92=AD=E6=BC=94=E6=92=AD=EF=BC=88?= =?UTF-8?q?=5Fis=5Fsettling=E5=8A=A0=E6=8E=92=E6=92=AD=E9=98=9F=E5=88=97?= =?UTF-8?q?=E9=A1=B9+=E6=BC=94=E6=92=AD=E5=AE=8C=E8=BE=B9=E6=B2=BF?= =?UTF-8?q?=E4=B8=BB=E5=8A=A8=E5=88=B7=E6=96=B0=E2=80=94=E2=80=94=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=B2=A1=E6=84=8F=E8=AF=86=E5=88=B0=E5=9C=A8=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E7=9A=84=E6=84=9F=E7=9F=A5=E7=BC=BA=E5=8F=A3=EF=BC=9B?= =?UTF-8?q?=E5=85=A8=E9=94=81=E5=AE=9E=E7=8E=B0=E4=B8=8E=E8=83=9C=E5=88=A9?= =?UTF-8?q?=E6=94=B6=E5=B0=BE=E9=93=BE=E5=AD=98=E5=9C=A8=E6=AD=BB=E9=94=81?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E3=80=94ui=5Fclick=5Fprobe=E4=B8=A4=E5=BA=A6?= =?UTF-8?q?=E6=8C=82=E6=AD=BB=E5=AE=9E=E8=AF=81=E3=80=95=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E4=B8=BA=E8=A7=86=E8=A7=89=E6=8C=87=E7=A4=BA=E5=BD=A2=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E5=91=88=E6=8A=A5=E7=94=A8=E6=88=B7=E8=A3=81=E5=86=B3?= =?UTF-8?q?=EF=BC=89=E2=91=A3ui=5Fprobe=E6=98=8E=E7=BB=86=E5=B8=A6?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E9=80=82=E9=85=8D=E6=8E=92=E6=92=AD=E6=80=81?= =?UTF-8?q?+=E8=A1=A5=E4=BA=A4=E4=B8=A4=E6=8E=A2=E9=92=88.uid=EF=BC=9B?= =?UTF-8?q?=E9=97=B8=3D=E5=86=92=E7=83=9F628/0+run=5Fall=2015=E5=A5=97+?= =?UTF-8?q?=E4=BA=94=E6=8E=A2=E9=92=88=E5=85=A8=E7=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/presentation/main.gd | 18 ++++++++++++++++-- game/presentation/views/board_cell_unit.gd | 6 +++++- game/presentation/views/board_view.gd | 9 ++++----- game/presentation/views/settlement_fx_view.gd | 10 ++++++---- game/smoke/board_shot_probe.gd.uid | 1 + game/smoke/fx_shot_probe.gd.uid | 1 + game/smoke/ui_probe.gd | 5 ++++- 7 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 game/smoke/board_shot_probe.gd.uid create mode 100644 game/smoke/fx_shot_probe.gd.uid diff --git a/game/presentation/main.gd b/game/presentation/main.gd index 8ccd1ef2..82d1289e 100644 --- a/game/presentation/main.gd +++ b/game/presentation/main.gd @@ -96,6 +96,7 @@ var _was_settling := false # 结算相位上升沿检测(结算轮光 var _row_queue: Array = [] # 待排播行(step_row 载荷原样入队;__round_line 标记=轮首分隔行) var _row_pace_wait := 0.0 # 距下一行排播的剩余秒(_process 消耗) var _pace_prev_segment := "" # 上一排播行的段型(段间/段内延迟判据) +var _was_pumping := false # 排播活跃边沿(T17——末行消费帧触发结算视觉回挖掘态刷新) const PACE_SEGMENT_GAP := 0.3 # 段间阶梯延迟(代拍板:白名单 0.2–0.4s 内取值,追认清单呈报) const PACE_ROW_GAP := 0.22 # 段内间隔(三轮 #3 上调 0.06→0.22——逐条演出可感知,配合数字浮现/状态脉冲) @@ -805,7 +806,13 @@ func _process(delta: float) -> void: if _row_queue.is_empty(): _row_pace_wait = 0.0 _pace_prev_segment = "" + if _was_pumping: + # 演播完边沿:结算视觉期由排播队列承载(_is_settling 排播项),队列排空的翻转 + # 无核心信号驱动——此处主动刷回挖掘态(去饱和解除/明细带收起/mode=dig)。 + _was_pumping = false + _refresh_presentations.call_deferred() return + _was_pumping = true _row_pace_wait -= delta if _row_pace_wait > 0.0: return @@ -1294,9 +1301,16 @@ func _sync_settlement_visuals() -> void: func _is_settling() -> bool: + # T17 修复:结算视觉期跟随排播演播到放完。核心层同步走完(轮末结算后逻辑秒回 Active), + # 旧判定让演播期棋盘提前恢复可挖观感=用户「没意识到在结算演出」感知缺口的根源; + # 演播期维持去饱和+禁挖光(结算中语义),放完自然回挖掘认知。判据=纯队列(_row_pace_wait + # 在末行消费后到下帧泵清零前有 >0 尾迹窗口,不可作演播中标志)。battle 收尾演播例外: + # overlay 开启即 _flush_row_queue 排空,视觉随队列空同步交接结算框。 if settlement == null or not settlement.is_battle_live(): - return false - return settlement.action_economy.phase == settlement.action_economy.PHASE_WAITING + return not _row_queue.is_empty() + if settlement.action_economy.phase == settlement.action_economy.PHASE_WAITING: + return true + return not _row_queue.is_empty() func _phase_text() -> String: diff --git a/game/presentation/views/board_cell_unit.gd b/game/presentation/views/board_cell_unit.gd index dcdfd331..2134a0b9 100644 --- a/game/presentation/views/board_cell_unit.gd +++ b/game/presentation/views/board_cell_unit.gd @@ -83,7 +83,11 @@ var tex_base: Texture2D = null # ① 砖面底 var tex_mutation: Texture2D = null # ② 变异纹带 var tex_glyph: Texture2D = null # ③ 数字 var tex_badge: Texture2D = null # ③' 徽章 -var tex_flag: Texture2D = null # ④ 旗 +var tex_flag: Texture2D = null: # ④ 旗(T17 修复:槽位可运行时换装〔插旗〕——同族 facade/aux_mark + set(v): # 均 setter 触发重绘;旧普通 var 赋值不重绘=旗插上不显示) + if tex_flag != v: + tex_flag = v + queue_redraw() var tex_facade: Texture2D = null # ⑥ E 格墙面材质(v3.5——南邻墙顶 center 瓦片同源,BoardView 注入) var facade_strip := false: # E 格开关(BoardView paint 按「已开格且南邻未开墙」写入——瓦片态专用) set(v): diff --git a/game/presentation/views/board_view.gd b/game/presentation/views/board_view.gd index e97e7f7c..ec513c9f 100644 --- a/game/presentation/views/board_view.gd +++ b/game/presentation/views/board_view.gd @@ -678,6 +678,9 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void: var glyph := "" var bg: Color var digit_col := COL_DIGIT + # 旗槽统一维护(T17 修复):旗格=封印旗纹理;其余格清 null(插旗格挖开后残留在 tex_flag + # 会让 _draw 无条件把旗印画在已开格上——tex_flag 绘制无 revealed 条件)。缺盘走字形回退。 + u.tex_flag = _flag_tex if (flag and not revealed and _flag_tex != null) else null if revealed: var rec: Dictionary = _minesweeper.reveal_record(c) # E2 收口:已开记录经查询面 if rec.get("kind", "") == "mine": @@ -696,11 +699,7 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void: else: if flag: bg = COL_BRICK - # 封印旗纹理落位(迭代 9 卡⑬——tex_flag 槽接线,迭代 8 卡⑤降级债务清偿): - # 纹理在位=字形「旗」退役(项目纹理槽惯例);缺盘=字形回退原语义(load_tex exists 守卫) - if _flag_tex != null: - u.tex_flag = _flag_tex - else: + if _flag_tex == null: glyph = "旗" digit_col = COL_FLAG else: diff --git a/game/presentation/views/settlement_fx_view.gd b/game/presentation/views/settlement_fx_view.gd index 993cc7b2..da07d3a1 100644 --- a/game/presentation/views/settlement_fx_view.gd +++ b/game/presentation/views/settlement_fx_view.gd @@ -90,18 +90,20 @@ func probe_settlement_marks() -> int: # 站桩头顶浮现数字,上飘 34px 渐隐 0.7s(减动效=时长折半同演不跳过);crit 加大加重。 func play_damage_number(pos: Vector2, text: String, col: Color, crit: bool = false) -> void: _fx_damage_marks += 1 - var lab := UiKit.label(text, 26 if crit else 20, true) + # T17 修复(用户实机「完全没看到伤害数字」):26/32px 大字+1.1s 驻留——旧 20px/0.7s 在 + # 结算排播节奏下视觉存在感不足;描边 4→6 同步加重(亮舞台底上保读数)。 + var lab := UiKit.label(text, 32 if crit else 26, true) lab.add_theme_color_override("font_color", col) lab.add_theme_color_override("font_outline_color", Color(0.1, 0.08, 0.06, 0.9)) - lab.add_theme_constant_override("outline_size", 4) + lab.add_theme_constant_override("outline_size", 6) lab.mouse_filter = Control.MOUSE_FILTER_IGNORE lab.z_index = 6 add_child(lab) await get_tree().process_frame # 等一帧取实际尺寸(文本度量) lab.position = pos - lab.size * 0.5 var tw := lab.create_tween() - tw.tween_property(lab, "position:y", lab.position.y - 34.0, UiKit.motion(0.7)).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) - tw.parallel().tween_property(lab, "modulate:a", 0.0, UiKit.motion(0.35)).set_delay(UiKit.motion(0.35)) + tw.tween_property(lab, "position:y", lab.position.y - 40.0, UiKit.motion(1.1)).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) + tw.parallel().tween_property(lab, "modulate:a", 0.0, UiKit.motion(0.45)).set_delay(UiKit.motion(0.65)) tw.tween_callback(lab.queue_free) diff --git a/game/smoke/board_shot_probe.gd.uid b/game/smoke/board_shot_probe.gd.uid new file mode 100644 index 00000000..f6249ea3 --- /dev/null +++ b/game/smoke/board_shot_probe.gd.uid @@ -0,0 +1 @@ +uid://ex47eiu0q8iv diff --git a/game/smoke/fx_shot_probe.gd.uid b/game/smoke/fx_shot_probe.gd.uid new file mode 100644 index 00000000..3d65b45f --- /dev/null +++ b/game/smoke/fx_shot_probe.gd.uid @@ -0,0 +1 @@ +uid://cjphtdru77a1r diff --git a/game/smoke/ui_probe.gd b/game/smoke/ui_probe.gd index bcc6637d..2c2506da 100644 --- a/game/smoke/ui_probe.gd +++ b/game/smoke/ui_probe.gd @@ -114,7 +114,10 @@ func _ready() -> void: problems.append("C 区魔法道具槽(预留)缺失") if main.stage.hero_standee.slot_row == null: problems.append("B 区站桩状态行缺失(状态效果唯一展示面——2026-09-26 C 区精简批)") - if main.log_view.mode() != "dig" or main.log_view.custom_minimum_size.y != 24.0: + # B 区明细带挖掘期收起断言(T17 视觉扩展批适配):结算演播期 settling 视觉延伸=mode=settle + # 属新语义(演播放完回 dig——main._is_settling 排播项,判据=纯队列),本断言仅在排播空闲态判定。 + if main._row_queue.is_empty() \ + and (main.log_view.mode() != "dig" or main.log_view.custom_minimum_size.y != 24.0): problems.append("B 区明细带挖掘期应收起 24px(mode=%s h=%s)" % [main.log_view.mode(), str(main.log_view.custom_minimum_size.y)]) # E 区道具面板已随可选类删除下线(格面资源批 2026-09-15)——四区构建由其余断言覆盖