fix(调试入口): boot 菜单优先+开始屏右下角调试角标恢复——用户实测否决「启动即开」

用户 F5 实测:浮窗 boot 自动开把开始屏盖成调试面板(640×约700 居中面板盖掉大半个屏),
且菜单层没有任何浮窗入口(iter18 迁宿主两屏的理由=启动即开,已不成立)——关掉浮窗后
菜单上无法再开。用户令查三问(入口在哪/何时触发/触发后效果)后修正:

- main.gd:_ready 删 boot 自动开浮窗(_debug_entry 门控保留);恢复菜单角标接线
  (pressed→_on_debug_badge_pressed);可见性赋值挪到门控落定之后(原在 _build_ui
  读到初始 false——首跑冒烟抓出)
- ui_assembler:恢复右下角「调试」角标(git 历史 40fb4a5c^ 原实现:PRESET_BOTTOM_RIGHT
  16px 角距+FS_HINT+豁免宽度基准)+ 返回键补 dbgbtn(首跑漏了返回键致 menu_screen
  句柄 null、_build_ui 中断、V1c 层序红——冒烟抓出)
- scenes/menu_screen.gd:暴露 dbgbtn 句柄
- debug_overlay.gd:desc 文案改三处入口说明(开始屏右下角/战斗屏 HUD/地图屏角标)
- 探针/断言四处换代:smoke V2f 改「boot 不开浮窗+菜单角标可见」、V1a 收回严格判据;
  click_probe boot 检查反转+角标检查翻转为缺失才红+删浮窗恢复断言;tune_probe ① 改
  角标真实点击开窗路径;shot_probe 删浮窗归一段(已成死代码)
This commit is contained in:
DKChan committed 2026-10-16 04:21:49 +08:00
1 parent d3356985a8
commit bf65b49331
8 files changed
+44 -37

No files matched your search

+6 -4
View File
@@ -217,8 +217,9 @@ func _ready() -> void:
_refresh_resume_button() # 迭代 8 卡②——启动读盘后按断点在档态点亮「继续上局」
_start_overlay.visible = true
_debug_entry = true # 2026-10-16 用户令:DS_DEBUG 环境变量门控写死(原 OS.get_environment 读取已退役;发布前清)
if _debug_entry:
_show_debug_overlay() # 启动即开(手动可关、两屏角标可再开——P3 甲)
_menu_screen.dbgbtn.visible = _debug_entry # 角标可见性须门控落定后赋值(连接在 _build_ui 接线区)
# 2026-10-16 用户令修正:boot 菜单优先——不自动开浮窗(原「启动即开」把开始屏盖成调试面板,
# 用户实测否决);调试入口=开始屏右下角「调试」角标+对局中两屏角标(见菜单屏接线段)
# ==================== 视图接线(三屏壳 + 模态层装配;构建归屏壳/UiAssembler,本类只接线) ====================
@@ -331,8 +332,9 @@ func _build_ui() -> void:
_menu_screen.lvbtn.pressed.connect(_start_adventure_from_menu)
_menu_screen.resumebtn.pressed.connect(_resume_from_menu) # 迭代 8 卡②——续玩入口
_resume_btn = _menu_screen.resumebtn
# 调试角标入口退役(迭代 18 卡⑦ P2 甲——迁宿主:战斗屏 HUD+关卡地图屏各一枚,
# 接线见两屏装配段;开始层不再有调试入口,调试会话恒开=启动即开浮窗)
# 调试角标入口(2026-10-16 用户令恢复开始屏右下角角标——iter18 卡⑦ P2 甲迁宿主两屏的理由
# =「启动即开」,已随菜单优先修正不成立;对局中两枚角标接线见两屏装配段)
_menu_screen.dbgbtn.pressed.connect(_on_debug_badge_pressed)
# 营地/商店投影(T4/D4 拆件批——迁 camp_shop_presenter.gd;本类只接线、探针缝保缝转发;
# 购买写调用唯一经 MetaProgression/LevelRunner core 单口——组合根 lambda 现值注入)
_camp_pres = CampShopPresenter.new(CampFlowContext.new(db, func() -> Variant: return meta, func() -> Variant: return save_manager, camp_overlay, shop_overlay,
+2
View File
@@ -14,6 +14,7 @@ var campbtn: Button
var careerbtn: Button
var settingsbtn: Button
var quitbtn: Button
var dbgbtn: Button # 调试浮窗入口角标(2026-10-16 用户令恢复——boot 菜单优先,浮窗按需开)
const UiAssembler := preload("res://presentation/ui_assembler.gd") # 构建归装配器(规范 1.1——非全局类,preload 引用)
@@ -29,3 +30,4 @@ func _ready() -> void:
careerbtn = start.careerbtn
settingsbtn = start.settingsbtn
quitbtn = start.quitbtn
dbgbtn = start.dbgbtn
+11 -7
View File
@@ -88,10 +88,9 @@ static func build_overlays(host: Control, db) -> Dictionary:
}
# 开始覆盖层(返回 {overlay, box, lvbtn, resumebtn, campbtn, careerbtn, settingsbtn, quitbtn}——按钮接线归组合根;
# 开始覆盖层(返回 {overlay, box, lvbtn, resumebtn, campbtn, careerbtn, settingsbtn, quitbtn, dbgbtn}——按钮接线归组合根;
# 迭代 14.5 调试整合批:随机种子/数值调整板/两层调试三散件撤出主按钮组,收进调试浮窗——
# 迭代 18 卡⑦ P2 甲:右下角「调试」角标亦退役(入口迁宿主=战斗屏 HUD+关卡地图屏两枚角标,
# 调试会话恒开,浮窗启动即开——本层零调试入口)
# 2026-10-16 用户令:右下角「调试」角标恢复(boot 菜单优先,浮窗按需开——见装配段注)
# UI 落码批 M2(2026-10-04):单列 VBox→双列(左操作 56% + 右舞台);按钮动词化+悬停解释
#(解释全迁 tooltip,G5);lvbtn 升主操作钮(烛光黄 CANDLE);右列=立绘看台。**玩法速览牌已退役
#(2026-10-06 用户令:界面禁玩法文字墙——教学内容归 Beta 帮助手册〔教学引导定稿批 P4 丙〕,历史文案在 git)**;
@@ -157,9 +156,14 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
var quitbtn := UiKit.button("退出游戏")
box.add_child(quitbtn)
# 迭代 18 卡⑦ P2 甲——旧右下角调试角标退役(原迭代 14.5 装配段删除):入口迁宿主两屏
#(board_zone_view.debug_badge / level_map_screen.debug_badge),调试门控与可见性
# 同步归组合根 _sync_status_entry;开始层零调试入口(调试会话恒开=浮窗启动即开)
# 迭代 14.5 调试整合批——调试入口收右下角标(与主按钮组非平级;调试会话恒开点亮,可见性归组合根)。
# 2026-10-16 用户令修正:boot 菜单优先不开浮窗(原「启动即开」浮窗盖住开始屏,用户实测否决),
# 角标恢复为菜单层唯一调试入口(iter18 卡⑦ P2 甲迁宿主两屏的理由=启动即开,已不成立)
var dbgbtn := UiKit.button("调试", 0.0) # 角标豁免宽度基准(0=不设 min/flags——角落小件)
dbgbtn.add_theme_font_size_override("font_size", UiKit.FS_HINT)
dbgbtn.tooltip_text = "打开调试浮窗(当局数据/种子/数值调整)"
dbgbtn.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_RIGHT, Control.PRESET_MODE_MINSIZE, 16)
overlay.add_child(dbgbtn)
# 右列:立绘看台 + 玩法速览牌(M2——帮助全文保留表值驱动,仅容器化;内容含地形变异段不删)
var right := VBoxContainer.new()
@@ -197,7 +201,7 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
return {"overlay": overlay, "box": box,
"lvbtn": lvbtn, "resumebtn": resumebtn,
"campbtn": campbtn, "careerbtn": careerbtn,
"settingsbtn": settingsbtn, "quitbtn": quitbtn}
"settingsbtn": settingsbtn, "quitbtn": quitbtn, "dbgbtn": dbgbtn}
# 调试两层模式的层间过渡覆盖层(历史入口专用)。返回 {overlay, label, next_btn}——接线归组合根
+1 -1
View File
@@ -163,7 +163,7 @@ func _build() -> void:
var title := UiKit.label("调试",UiKit.FS_TITLE, true, UiKit.WARM)
box.add_child(title)
var desc := UiKit.label(
"开发调试专用(恒开:启动即开;战斗屏/地图屏「调试」角标可再开)。当局数据=本局只读投影,种子即本局种子唯一查看位。\n百分比叠加基础值:攻击 %d / 生命 %d。影响所有模式(手动与模拟),不落盘。" % [_base_atk, _base_hp],
"开发调试专用(开始屏右下角/战斗屏 HUD/关卡地图屏「调试」角标均可开)。当局数据=本局只读投影,种子即本局种子唯一查看位。\n百分比叠加基础值:攻击 %d / 生命 %d。影响所有模式(手动与模拟),不落盘。" % [_base_atk, _base_hp],
13, false, UiKit.WARM_SOFT)
box.add_child(desc)
box.add_child(HSeparator.new())