迭代14.5调试整合批·补遗:上次提交漏暂存的11个修改件收编——main.gd接线(角标入口/浮窗构建挂树序末/模态登记/处理器更名_show_debug_overlay/_close_debug_overlay+对局随开随收/门禁护栏)+ui_assembler(build_overlays撤TunePanel改签名+开始覆盖层三散件撤除+角落角标)+探针ui_tune_probe全量改接与ui_click_probe两处+核心/呈现/冒烟注释口径TunePanel→调试浮窗(零行为);与48c0b34同批同验证(冒烟747/0+三探针绿)

This commit is contained in:
DKChan committed 2026-10-05 00:51:15 +08:00
1 parent 48c0b343a6
commit 46dadbb45d
11 files changed
+112 -110

No files matched your search

+42 -34
View File
@@ -118,10 +118,10 @@ var shop_overlay: ShopOverlay # 商店覆盖层(GP+商店房实施
var camp_overlay: CampOverlay # 营地覆盖层(元进度实现批——主菜单营地入口兑付呈现)
var settings_store # 系统级设置独立存储(迭代 8 卡④——音量/全屏/减动效)
var settings_overlay: SettingsOverlay # 设置覆盖层(迭代 8 卡④——最小设置面)
var tune_panel: TunePanel
var debug_overlay: DebugOverlay # 调试浮窗(迭代 14.5 调试整合批——种子/数值调整/批量模拟/两层调试入口收一)
var _modals = null # 模态层级状态机(modal_stack.gd——缺陷⑤纪律载体)
var _tune_sim = null # 调整板批量模拟控制器(tune_sim_controller.gd)
var _tune_sim = null # 调试浮窗批量模拟控制器(tune_sim_controller.gd)
var _hints_shown := {} # 一次性非模态提示去重(每 run 一次:chord/no_adjacent)
var _refresh_used_round := 0 # 本轮已受理刷新次数(遥测 round_refresh_index——每轮 round_started 归零)
var _boss_active := false # Boss 遭遇变体(阶段指示附 Boss 名)
@@ -242,15 +242,14 @@ func _build_ui() -> void:
logger.ap_per_round = int(db.action_economy.ap_per_round)
# 模态覆盖层(登记序 = 树序 = z 遮挡序:图例 < 明细回看 < 节点 < 关卡画面 < 三选一 < 终局
# < 商店 < 营地 < 调整板 < 设置 < 确认弹窗)
var overlays: Dictionary = UiAssembler.build_overlays(self, db, int(db.hero.atk), int(db.hero.max_hp))
# < 商店 < 营地 < 设置 < 确认弹窗 < 调试浮窗)
var overlays: Dictionary = UiAssembler.build_overlays(self, db)
legend_overlay = overlays.legend_overlay
review_overlay = overlays.review_overlay
node_overlay = overlays.node_overlay
_end_overlay = overlays.end_overlay
shop_overlay = overlays.shop_overlay
camp_overlay = overlays.camp_overlay
tune_panel = overlays.tune_panel
level_screen = LevelMapScreen.new()
add_child(level_screen)
# 树序 = 模态登记序 = z 遮挡序(缺陷⑤纪律)——关卡画面须夹在节点层与商店层之间
@@ -263,9 +262,6 @@ func _build_ui() -> void:
level_screen.abandon_requested.connect(_on_abandon_requested) # 放弃入口(2026-09-21 用户拍板——台账 119)
_end_overlay.review_pressed.connect(_on_end_review)
_end_overlay.continue_pressed.connect(_on_battle_end_continue)
tune_panel.closed.connect(_close_tune_panel)
tune_panel.apply_requested.connect(_on_tune_apply)
tune_panel.simulate_requested.connect(_on_tune_simulate)
settings_overlay = SettingsOverlay.new(settings_store) # 迭代 8 卡④——最小设置面(音量/全屏/减动效)
add_child(settings_overlay)
settings_overlay.closed.connect(_on_settings_closed)
@@ -287,12 +283,10 @@ func _build_ui() -> void:
var start: Dictionary = UiAssembler.build_start_overlay(self, db)
_start_overlay = start.overlay
_seed_edit = start.seed_edit
_resume_btn = start.resumebtn
start.lvbtn.pressed.connect(_start_adventure_from_menu)
start.resumebtn.pressed.connect(_resume_from_menu) # 迭代 8 卡②——续玩入口
start.tunebtn.pressed.connect(_show_tune_panel)
start.dbgbtn.pressed.connect(_start_debug_levels)
start.dbgbtn.pressed.connect(_show_debug_overlay) # 迭代 14.5——调试角标入口(浮窗,非平级主按钮)
start.dbgbtn.visible = OS.get_environment("DS_DEBUG") == "1" # 迭代 8 卡④——调试入口默认隐藏门控(DS_DEBUG=1 点亮)
# 营地/商店投影(T4/D4 拆件批——迁 camp_shop_presenter.gd;本类只接线、探针缝保缝转发;
# 购买写调用唯一经 MetaProgression/LevelRunner core 单口——组合根 lambda 现值注入)
@@ -326,11 +320,22 @@ func _build_ui() -> void:
confirm_dialog.confirmed.connect(_on_confirm_new_adventure)
confirm_dialog.cancelled.connect(_on_confirm_cancelled)
# 调试浮窗(迭代 14.5 调试整合批——主菜单三散件收一:随机种子/数值调整/批量模拟/两层调试入口)。
# 树序在开始层与确认弹窗之后 = 浮于菜单之上的 Dialog(不隐藏开始层——与确认弹窗同款形态,
# 旧 TunePanel「与开始层互斥」形态退役);入口仅开始覆盖层角标(DS_DEBUG=1 门控)
debug_overlay = DebugOverlay.new(db, int(db.hero.atk), int(db.hero.max_hp))
add_child(debug_overlay)
_seed_edit = debug_overlay.seed_edit # 种子读取面随浮窗迁入(_seed_value 唯一消费点不变)
debug_overlay.closed.connect(_on_modal_closed.bind(debug_overlay))
debug_overlay.apply_requested.connect(_on_tune_apply)
debug_overlay.simulate_requested.connect(_on_tune_simulate)
debug_overlay.debug_levels_requested.connect(_start_debug_levels)
# 模态登记(缺陷⑤纪律——登记序 = 树序:含 move_child 调位后的关卡画面/三选一终位)
_modals = ModalStack.new()
for m: Control in [legend_overlay, review_overlay, node_overlay, level_screen, bonus_overlay, _end_overlay, shop_overlay, camp_overlay, tune_panel, settings_overlay, confirm_dialog]:
for m: Control in [legend_overlay, review_overlay, node_overlay, level_screen, bonus_overlay, _end_overlay, shop_overlay, camp_overlay, settings_overlay, confirm_dialog, debug_overlay]:
_register_modal(m)
_tune_sim = TuneSimController.new(db, tune_panel, int(db.hero.max_hp))
_tune_sim = TuneSimController.new(db, debug_overlay, int(db.hero.max_hp))
func _fatal_screen(msg: String) -> void:
@@ -432,7 +437,7 @@ func _resume_from_menu() -> void:
_reset_run_scope()
log_view.clear()
logger.start_session(int(bp.get("master_seed", 0)))
adventure.set_hero_override(tune_panel.atk_pct(), tune_panel.hp_pct())
adventure.set_hero_override(debug_overlay.atk_pct(), debug_overlay.hp_pct())
if not adventure.resume_adventure(bp, {"hero_override": meta.hero_override() if meta != null else {}, "aux_unlocked": _aux.unlocked_set()}):
_fatal_screen("续玩恢复失败——见输出日志")
return
@@ -467,7 +472,7 @@ func _start_adventure() -> void:
log_view.clear()
var seed_val := _seed_value()
logger.start_session(seed_val)
adventure.set_hero_override(tune_panel.atk_pct(), tune_panel.hp_pct())
adventure.set_hero_override(debug_overlay.atk_pct(), debug_overlay.hp_pct())
# 永久强化注入(元进度实现批):冒险开始参数面——meta 现算 override 显式传参(全零 = 白板)
# 首次冒险脚本(关卡节点图生成 v0.4):存档布尔位 false = 全关固定模板 0(教学重放);置位后逐关抽签
var first_script: bool = not save_manager.is_first_adventure_done()
@@ -482,7 +487,7 @@ func _on_adventure_level_started(level_index: int, display_name: String) -> void
runner = adventure.runner()
log_view.append_bb(Narrator.level_open_line(display_name, int(adventure.master_seed),
int(db.hero.atk), int(db.hero.max_hp),
tune_panel.atk_pct() > 0 or tune_panel.hp_pct() > 0))
debug_overlay.atk_pct() > 0 or debug_overlay.hp_pct() > 0))
func _reset_run_scope() -> void:
@@ -580,7 +585,7 @@ func _on_battle_end_continue() -> void:
settlement = null
adventure = null
_adventure_mode = false
tune_panel.reset_sliders()
debug_overlay.reset_sliders()
_start_overlay.visible = true
_refresh_resume_button() # 迭代 8 卡②——回菜单按断点在档态刷新(收束后已清=隐藏)
_refresh_presentations()
@@ -593,13 +598,15 @@ func _on_end_review() -> void:
# ==================== 调试模式(连续两层——编排归 debug_session.gd;
# 单场遭遇用户入口已删(2026-09-13 用户裁决)——debug_session.start_single 原语仅探针使用)
# 单场遭遇用户入口已删(2026-09-13 用户裁决)——debug_session.start_single 原语仅探针使用;
# 入口 2026-10-04 迁调试浮窗(debug_levels_requested 接线))
# T4/D3 收口注记:本节处理器(battle_created/battle_ready/override/seed)系组合根绑定面——
# settlement 写与 _wire_battle=ADR-0001 组合根 essence,override/seed 取数面在组合根 UI 态
#(tune_panel/_seed_edit)——不迁移,信号连接留本根(契约 3)。====================
#(debug_overlay/_seed_edit)——不迁移,信号连接留本根(契约 3)。====================
func _start_debug_levels() -> void:
tune_panel.reset_sliders()
debug_overlay.reset_sliders()
_close_modal(debug_overlay) # 浮窗内入口发起——随开随收(对局期不可再开:门禁在 _show_debug_overlay)
_start_overlay.visible = false
log_view.clear()
log_view.append_bb(Narrator.debug_open_line(_seed_value(), 1, true))
@@ -633,12 +640,12 @@ func _on_inter_next_pressed() -> void:
_fatal_screen("战斗启动失败——见输出日志")
# E4:加成生效值供给(debug_session 注入 Callable——每次从面板百分比现算,经 encounter 传参零表写;
# E4:加成生效值供给(debug_session 注入 Callable——每次从浮窗百分比现算,经 encounter 传参零表写;
# 原表写路径 _apply_hero_override/_scaled_override 已废除,双写叠加 6→18→54 整类隐患随之移除;
# 合成式单点在 UiKit.scaled——与 TunePanel 生效值预览共用,本类不再持有同式私有实现)
# 合成式单点在 UiKit.scaled——与调试浮窗生效值预览共用,本类不再持有同式私有实现)
func _debug_hero_override() -> Dictionary:
return {"atk": UiKit.scaled(int(db.hero.atk), tune_panel.atk_pct()),
"max_hp": UiKit.scaled(int(db.hero.max_hp), tune_panel.hp_pct())}
return {"atk": UiKit.scaled(int(db.hero.atk), debug_overlay.atk_pct()),
"max_hp": UiKit.scaled(int(db.hero.max_hp), debug_overlay.hp_pct())}
# 奖励徽章身份解析(组合根守卫:仅挖掘期 Active 相位内查询——地图战斗资源 Ready 域外零读、零诊断噪音;
@@ -1096,22 +1103,23 @@ func _on_diagnose_pressed() -> void:
board_zone.toast.show_toast("已转储诊断: " + path, "info")
# ==================== 数值调整板(加成应用/批量模拟编排——组合根承接,视图纯 UI)====================
# ==================== 调试浮窗(迭代 14.5 整合批——原数值调整板节收编;开合/应用/模拟编排组合根承接)====================
func _show_tune_panel() -> void:
_start_overlay.visible = false
_open_modal(tune_panel) # 模态栈单口(T3 收口批)
func _show_debug_overlay() -> void:
# 门禁(用户裁 2026-10-04:仅开始菜单可开,对局中不可达):入口角标宿主即开始层,
# 此护栏防御未来调用面(含探针直呼);浮窗树序在开始层之后 = 悬浮其上,不隐藏菜单
if not _start_overlay.visible:
return
_open_modal(debug_overlay) # 模态栈单口
func _close_tune_panel() -> void:
_close_modal(tune_panel) # 模态栈单口(T3 收口批)
_start_overlay.visible = true
_refresh_resume_button() # 迭代 8 卡②——回菜单按断点在档态刷新
func _close_debug_overlay() -> void:
_close_modal(debug_overlay) # 模态栈单口——开始层全程未隐藏,无需恢复
func _on_tune_apply(atk_pct: int, hp_pct: int) -> void:
# E4:加成无持久态可"落"——各战斗开局经 _debug_hero_override/runner 现算生效(面板仅关闭回开始层)
_close_tune_panel()
# E4:加成无持久态可"落"——各战斗开局经 _debug_hero_override/runner 现算生效(应用=关闭浮窗)
_close_debug_overlay()
func _on_tune_simulate(n: int) -> void: