From a0557223725fca9f775e68595cb1235f6a7f3f68 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 28 Sep 2026 06:42:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(ux):=20T3=20=E5=85=A8=E9=93=BE=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E9=9A=8F=E7=8B=AC=E7=AB=8B=E5=B1=8F=E2=80=94=E2=80=94?= =?UTF-8?q?=E5=85=91=E4=BB=98=E8=A6=86=E7=9B=96=E5=B1=82=E6=9C=AC=E5=B1=8F?= =?UTF-8?q?=E5=9F=9F=E5=86=85=E5=BC=B9=E5=87=BA+=E5=87=BA=E5=B1=8F?= =?UTF-8?q?=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _submit_choice 节点类型分支:战斗/Boss=出屏(visible=false 后发射);奖励/恢复/商店=本屏保持激活发射——兑付覆盖层由节点事件在本屏域内弹出(模态栈打开低层自动隐藏高层本屏、关闭自动恢复,零机制改动复用),兑付确认回图即本屏就地刷新(open_choices 幂等,was_visible 判据不重放淡入)。组合根 _on_route_chosen 改视图去留随动:出屏才收栈记录+_exit_level_screen 回战斗屏;放弃/冒险终局强制回战斗屏呈现摘要(T2 已落)。零自动推进纪律零改动。轻闸=冒烟 557/0+五探针 PASS(click_probe 岔路/商店路径含域内弹出全程实测)。 --- game/presentation/main.gd | 7 +++++-- game/presentation/views/level_map_screen.gd | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/game/presentation/main.gd b/game/presentation/main.gd index cb97bd95..098c5ca7 100644 --- a/game/presentation/main.gd +++ b/game/presentation/main.gd @@ -582,9 +582,12 @@ func _on_choices_presented(candidates: Array) -> void: func _on_route_chosen(node_id: int) -> void: - _close_modal(level_screen) + # 形态升格分支(2026-09-28):视图已按节点类型定去留——战斗/Boss 出屏(visible=false,此处收栈 + # 记录一致性+回战斗屏);奖励/恢复/商店本屏保持激活(兑付覆盖层由节点事件域内弹出,模态栈 + # 打开低层时自动隐藏本屏、关闭自动恢复) if not level_screen.visible: - _exit_level_screen() # 战斗/Boss 节点:切回战斗屏;奖励/恢复/商店:本屏保持激活(T3 接管域内弹出) + _close_modal(level_screen) + _exit_level_screen() if runner != null and not runner.pick_next_node(node_id): push_error("[组合根] 选路被拒(编号 %d 不在候选)" % node_id) diff --git a/game/presentation/views/level_map_screen.gd b/game/presentation/views/level_map_screen.gd index e80c3718..be202209 100644 --- a/game/presentation/views/level_map_screen.gd +++ b/game/presentation/views/level_map_screen.gd @@ -318,7 +318,12 @@ func _candidate_at(local_pos: Vector2) -> int: func _submit_choice(nid: int) -> void: - visible = false + # 形态升格分支(2026-09-28 独立屏):战斗/Boss 节点 = 出屏切回战斗屏;奖励/恢复/商店节点 = + # 本屏保持激活——兑付覆盖层由节点事件在本屏域内弹出(模态栈遮挡恢复语义复用),兑付确认后回图刷新 + var node := _node_by_id(nid, _runner.nodes()) + var t := String(node.get("type", "")) + if t != "reward" and t != "rest" and t != "shop": + visible = false route_chosen.emit(nid)