feat(调试入口): 全局浮层角标——UI 最顶层、任何 UI 不遮挡(2026-10-16 用户令)
用户定稿:调试入口不做置顶钮式按需出现,要的是「UI 最顶层浮层、不被任何 UI 遮挡」。
实现=三枚屏内角标(菜单右下/战斗 HUD 右下/地图顶栏)合并为一枚全局浮层角标:
- LAYER_CONTRACT 末位新增 {"key": "debug_badge", "kind": "float"}——只落树序(最顶绘制序)、
不注册 ModalStack:open() 遮挡记账只隐藏登记层,故任何模态/覆盖层开都不遮它(用户需求
的机制根因);_layer_node 补映射;main 直接子层、构建走 ui_assembler.build_debug_badge
- 位置:右下角 16px 惯例位;地图屏底栏 85px 常驻→_sync_status_entry 按 map_on 抬 offset
至底栏上方 16px;战斗屏状态角标经 MarginContainer 让位(right 16/bottom 52)不再被压
- 屏内角标全退役:menu_screen/board_zone_view/level_map_screen 三处 debug_badge 删除,
main 两处接线与 _sync_status_entry 四条可见性/置灰行清除(浮层常显不置灰——点它就是开浮窗)
- 浮窗 desc 文案改「UI 最顶层「调试」浮层角标随时可开——任何界面不遮挡」
- 断言/探针换代:smoke V2f 查 main.debug_badge boot 可见;click_probe 遮挡判据移至设置面
开中段(浮层角标此时仍应可见=直接验「不遮挡」);tune_probe ①点击路径与⑨对局中角标
全改 main.debug_badge(T2 防线断言不动——浮窗 non_locking×遮挡复活×has_open 组合回归)
冒烟 1127/0 过;全量闸待跑。
This commit is contained in:
1 parent
cc575b2ce3
commit
6b1e447d27
9 files changed
+72
-70
No files matched your search
+18
-11
@@ -48,6 +48,8 @@ const LAYER_CONTRACT: Array[Dictionary] = [
|
||||
{"key": "inter_overlay", "kind": "state", "tags": []},
|
||||
{"key": "confirm_dialog", "kind": "modal", "tags": []},
|
||||
{"key": "debug_overlay", "kind": "modal", "tags": [ModalStack.TAG_NON_LOCKING]},
|
||||
{"key": "debug_badge", "kind": "float"}, # 2026-10-16 用户令:调试入口全局浮层——末位=最顶绘制序;
|
||||
# float 类不注册 ModalStack(open() 遮挡记账只隐藏登记层)→ 任何 UI 打开都不遮它
|
||||
]
|
||||
|
||||
var db
|
||||
@@ -113,6 +115,7 @@ var settings_overlay: SettingsOverlay # 设置覆盖层(迭代 8 卡④—
|
||||
var status_panel: StatusPanel # 局内状态面板·只读(迭代 17 卡③——钥石余额+营地三柜台进度查看;登记设置层同档)
|
||||
var career_overlay: CareerOverlay # 生涯页·只读全屏页(迭代 18 卡④——跨局汇总六类九项;登记营地同档〔设置层旁、确认弹窗之前〕)
|
||||
var debug_overlay: DebugOverlay # 调试浮窗(迭代 14.5 调试整合批——种子/数值调整/批量模拟/两层调试入口收一)
|
||||
var debug_badge: Button # 调试浮层入口角标(2026-10-16 用户令:UI 最顶层浮层——LAYER_CONTRACT 末位 float 类,任何 UI 不遮挡)
|
||||
|
||||
var _modal_flow = null # 模态编排纯逻辑类(modal_flow.gd——迭代 27 T4 P1-5/P2-7 抽取;依赖仅 ModalStack+查询 Callable)
|
||||
var _modals = null # 模态层级状态机(=_modal_flow.stack——探针 _list 登记序断言缝保留)
|
||||
@@ -191,9 +194,9 @@ func _ready() -> void:
|
||||
_refresh_resume_button() # 迭代 8 卡②——启动读盘后按断点在档态点亮「继续上局」
|
||||
_start_overlay.visible = true
|
||||
_debug_entry = true # 2026-10-16 用户令:DS_DEBUG 环境变量门控写死(原 OS.get_environment 读取已退役;发布前清)
|
||||
_menu_screen.dbgbtn.visible = _debug_entry # 角标可见性须门控落定后赋值(连接在 _build_ui 接线区)
|
||||
debug_badge.visible = _debug_entry # 浮层角标可见性须门控落定后赋值(构建/连接在 _build_ui)
|
||||
# 2026-10-16 用户令修正:boot 菜单优先——不自动开浮窗(原「启动即开」把开始屏盖成调试面板,
|
||||
# 用户实测否决);调试入口=开始屏右下角「调试」角标+对局中两屏角标(见菜单屏接线段)
|
||||
# 用户实测否决);调试入口=UI 最顶层全局浮层角标(LAYER_CONTRACT 末位 float 类,任何 UI 不遮挡)
|
||||
|
||||
|
||||
# ==================== 视图接线(三屏壳 + 模态层装配;构建归屏壳/UiAssembler,本类只接线) ====================
|
||||
@@ -237,7 +240,6 @@ func _build_ui() -> void:
|
||||
|
||||
board_zone.action_requested.connect(_on_board_action)
|
||||
board_zone.status_badge.pressed.connect(_on_status_badge_pressed) # 状态面板入口(迭代 17 卡③——战斗屏 HUD 角标)
|
||||
board_zone.debug_badge.pressed.connect(_on_debug_badge_pressed) # 调试浮窗入口(迭代 18 卡⑦ P2 甲——战斗屏 HUD 角标)
|
||||
info_panel.treasure_slot_clicked.connect(_treasure_ui.on_slot_clicked) # 迭代 7 T4——两步交互第一步
|
||||
board_zone.stop_pressed.connect(_on_stop_pressed)
|
||||
board_zone.refresh_confirmed.connect(_on_refresh_confirmed)
|
||||
@@ -270,7 +272,6 @@ func _build_ui() -> void:
|
||||
node_overlay.continue_pressed.connect(_on_node_continue)
|
||||
level_screen.route_chosen.connect(_on_route_chosen)
|
||||
level_screen.status_badge.pressed.connect(_on_status_badge_pressed) # 状态面板入口(迭代 17 卡③——地图屏顶栏角标)
|
||||
level_screen.debug_badge.pressed.connect(_on_debug_badge_pressed) # 调试浮窗入口(迭代 18 卡⑦ P2 甲——地图屏顶栏角标)
|
||||
level_screen.abandon_requested.connect(_on_abandon_requested) # 放弃入口(2026-09-21 用户拍板——台账 119)
|
||||
_end_overlay.continue_pressed.connect(_on_battle_end_continue)
|
||||
settings_overlay = SettingsOverlay.new(settings_store) # 迭代 8 卡④——最小设置面(音量/全屏/减动效)
|
||||
@@ -306,9 +307,11 @@ 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
|
||||
# 调试角标入口(2026-10-16 用户令恢复开始屏右下角角标——iter18 卡⑦ P2 甲迁宿主两屏的理由
|
||||
# =「启动即开」,已随菜单优先修正不成立;对局中两枚角标接线见两屏装配段)
|
||||
_menu_screen.dbgbtn.pressed.connect(_on_debug_badge_pressed)
|
||||
# 调试入口=UI 最顶层全局浮层角标(2026-10-16 用户令:任何 UI 不遮挡——菜单/战斗/地图三枚
|
||||
# 屏内角标形态退役,全局浮层全场景承载;连接归组合根,树序/登记面见 LAYER_CONTRACT 末位)
|
||||
debug_badge = UiAssembler.build_debug_badge(self)
|
||||
add_child(debug_badge)
|
||||
debug_badge.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,
|
||||
@@ -417,6 +420,7 @@ func _layer_node(key: String) -> Node:
|
||||
"inter_overlay": return _inter_overlay
|
||||
"confirm_dialog": return confirm_dialog
|
||||
"debug_overlay": return debug_overlay
|
||||
"debug_badge": return debug_badge
|
||||
return null
|
||||
|
||||
|
||||
@@ -1147,10 +1151,13 @@ func _sync_status_entry() -> void:
|
||||
level_screen.status_badge.disabled = _modal_flow.badge_greyed_map()
|
||||
# 调试浮窗角标(迭代 18 卡⑦ P2 甲——迁宿主两屏,调试会话门控恒开;17卡③状态角标同形制同守卫):
|
||||
# 战斗屏=对局内(冒险或调试两层)且地图屏未激活;地图屏=随屏;开始菜单零角标(恒开=启动即开)
|
||||
board_zone.debug_badge.visible = _debug_entry and not map_on and battle_live
|
||||
level_screen.debug_badge.visible = _debug_entry and map_on
|
||||
board_zone.debug_badge.disabled = board_zone.status_badge.disabled
|
||||
level_screen.debug_badge.disabled = level_screen.status_badge.disabled
|
||||
board_zone.status_badge.visible = run_scope.level_active and not map_on
|
||||
level_screen.status_badge.visible = map_on
|
||||
board_zone.status_badge.disabled = _modal_flow.badge_greyed_battle() # 迭代 27 T4——互斥域谓词
|
||||
level_screen.status_badge.disabled = _modal_flow.badge_greyed_map()
|
||||
# 调试浮层角标(2026-10-16 用户令:全局浮层任何 UI 不遮挡——可见性不随场景变,只抬 offset
|
||||
# 避让:地图屏底栏 85px 常驻,角标抬至底栏上方 16px;其余场景右下角 16px 贴底)
|
||||
debug_badge.offset_bottom = -101.0 if map_on else -16.0
|
||||
|
||||
|
||||
# ---- 探针缝保缝(T4/D4 拆件——click/ui_probe 营地段直呼组合根面;实现归 camp_shop_presenter.gd)----
|
||||
|
||||
@@ -14,7 +14,6 @@ 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 引用)
|
||||
|
||||
@@ -30,4 +29,3 @@ func _ready() -> void:
|
||||
careerbtn = start.careerbtn
|
||||
settingsbtn = start.settingsbtn
|
||||
quitbtn = start.quitbtn
|
||||
dbgbtn = start.dbgbtn
|
||||
@@ -86,9 +86,9 @@ static func build_overlays(host: Control, db) -> Dictionary:
|
||||
}
|
||||
|
||||
|
||||
# 开始覆盖层(返回 {overlay, box, lvbtn, resumebtn, campbtn, careerbtn, settingsbtn, quitbtn, dbgbtn}——按钮接线归组合根;
|
||||
# 开始覆盖层(返回 {overlay, box, lvbtn, resumebtn, campbtn, careerbtn, settingsbtn, quitbtn}——按钮接线归组合根;
|
||||
# 迭代 14.5 调试整合批:随机种子/数值调整板/两层调试三散件撤出主按钮组,收进调试浮窗——
|
||||
# 2026-10-16 用户令:右下角「调试」角标恢复(boot 菜单优先,浮窗按需开——见装配段注)
|
||||
# 2026-10-16 用户令:调试入口=UI 最顶层全局浮层角标(build_debug_badge,本层零调试入口)
|
||||
# UI 落码批 M2(2026-10-04):单列 VBox→双列(左操作 56% + 右舞台);按钮动词化+悬停解释
|
||||
#(解释全迁 tooltip,G5);lvbtn 升主操作钮(烛光黄 CANDLE);右列=立绘看台。**玩法速览牌已退役
|
||||
#(2026-10-06 用户令:界面禁玩法文字墙——教学内容归 Beta 帮助手册〔教学引导定稿批 P4 丙〕,历史文案在 git)**;
|
||||
@@ -152,14 +152,9 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
|
||||
var quitbtn := UiKit.button("退出游戏")
|
||||
box.add_child(quitbtn)
|
||||
|
||||
# 迭代 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)
|
||||
# 迭代 14.5 调试整合批——调试入口收浮层角标;2026-10-16 用户令修正:boot 菜单优先不开
|
||||
# 浮窗,调试入口=UI 最顶层全局浮层角标(build_debug_badge——LAYER_CONTRACT 末位、
|
||||
# ModalStack 登记外,任何 UI 不遮挡;对局中两屏角标形态随之退役,全局浮层全场景承载)
|
||||
|
||||
# 右列:立绘看台 + 玩法速览牌(M2——帮助全文保留表值驱动,仅容器化;内容含地形变异段不删)
|
||||
var right := VBoxContainer.new()
|
||||
@@ -197,7 +192,22 @@ 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, "dbgbtn": dbgbtn}
|
||||
"settingsbtn": settingsbtn, "quitbtn": quitbtn}
|
||||
|
||||
|
||||
# 调试浮层入口角标(2026-10-16 用户令:UI 最顶层浮层,任何 UI 不遮挡)——main 直接子层、
|
||||
# LAYER_CONTRACT 末位(float 类:只落树序、不注册 ModalStack——open() 遮挡记账只动登记层,
|
||||
# 故永不被隐藏);右下角 16px(拇指区惯例,与旧三屏角标同域);可见性归组合根(_debug_entry
|
||||
# 门控落定后赋值);地图屏底栏 85px 常驻,offset 抬升本函数不处理(组合根 _sync_status_entry)。
|
||||
static func build_debug_badge(host: Control) -> Button:
|
||||
var badge := UiKit.button("调试", 0.0) # 角落小件豁免宽度基准(0=不设 min/flags——同状态角标)
|
||||
badge.add_theme_font_size_override("font_size", UiKit.FS_HINT)
|
||||
badge.tooltip_text = "打开调试浮窗(当局数据/种子/数值调整)"
|
||||
badge.grow_horizontal = Control.GROW_DIRECTION_BEGIN # 向左上生长——尺寸变化向屏内
|
||||
badge.grow_vertical = Control.GROW_DIRECTION_BEGIN
|
||||
badge.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_RIGHT, Control.PRESET_MODE_MINSIZE, 16)
|
||||
badge.visible = false # 显式初始化——门控落定后由组合根置位
|
||||
return badge
|
||||
|
||||
|
||||
# 调试两层模式的层间过渡覆盖层(历史入口专用)。返回 {overlay, label, next_btn}——接线归组合根
|
||||
|
||||
@@ -7,8 +7,7 @@ var ap_bar: ApBarView
|
||||
var board_view: BoardView
|
||||
var toast: ToastStack
|
||||
var fx: BoardFxView
|
||||
var status_badge: Button # 状态面板入口角标(迭代 17 卡③ P1 丁——debug 角标同形制;连接归组合根)
|
||||
var debug_badge: Button # 调试浮窗入口角标(迭代 18 卡⑦ P2 甲——调试门控归组合根;状态角标同形制)
|
||||
var status_badge: Button # 状态面板入口角标(迭代 17 卡③ P1 丁;连接归组合根)
|
||||
var _board_area: Control # resized 命名转发用(原 lambda 局部捕获——P1-3 转命名 2026-09-29)
|
||||
|
||||
signal action_requested(cell: Vector2i, kind: String)
|
||||
@@ -39,29 +38,27 @@ func _init() -> void:
|
||||
board_area.add_child(fx)
|
||||
toast = ToastStack.new()
|
||||
board_area.add_child(toast)
|
||||
# 角标对(迭代 18 卡⑦ P2 甲——调试+状态两枚右下角常驻,HBox 并排锚角距 16px):
|
||||
# 17卡③状态角标同形制:紧凑钮豁免宽度基准+字号降档。可见性/置灰归组合根 _sync_status_entry
|
||||
#(调试门控/其他模态开着=置灰不可点——排除式开态查询);信号连接归组合根。
|
||||
# 状态角标(迭代 17 卡③ P1 丁——右下角常驻;2026-10-16 调试角标迁全局浮层后本屏只留状态):
|
||||
# 17卡③同形制:紧凑钮豁免宽度基准+字号降档。可见性/置灰归组合根 _sync_status_entry
|
||||
#(其他模态开着=置灰不可点——排除式开态查询);信号连接归组合根。
|
||||
# 全局调试浮层角标常驻右下角 16px(main 直接子层、ModalStack 登记外——任何 UI 不遮挡),
|
||||
# 状态角标经 MarginContainer 让位抬高(right 16/bottom 52=浮层钮高约24+间距8+16 贴底);
|
||||
# preset 在子件全部入列后调用——MINSIZE 锚按当时最小尺寸计偏移(空容器调用=零尺寸锚外溢屏边)
|
||||
var corner_wrap := MarginContainer.new()
|
||||
corner_wrap.add_theme_constant_override("margin_right", 16)
|
||||
corner_wrap.add_theme_constant_override("margin_bottom", 52)
|
||||
corner_wrap.grow_horizontal = Control.GROW_DIRECTION_BEGIN
|
||||
corner_wrap.grow_vertical = Control.GROW_DIRECTION_BEGIN
|
||||
corner_wrap.set_anchors_and_offsets_preset.call_deferred(Control.PRESET_BOTTOM_RIGHT, Control.PRESET_MODE_MINSIZE, 0)
|
||||
board_area.add_child(corner_wrap)
|
||||
var corner := HBoxContainer.new()
|
||||
corner.add_theme_constant_override("separation", 8)
|
||||
debug_badge = UiKit.button("调试", 0.0) # 角落小件豁免宽度基准(同状态角标)
|
||||
debug_badge.add_theme_font_size_override("font_size", UiKit.FS_HINT)
|
||||
debug_badge.tooltip_text = "打开调试浮窗(当局数据/种子/数值调整)"
|
||||
debug_badge.visible = false # 显式初始化——非调试会话不误现(可见性归组合根同步)
|
||||
corner.add_child(debug_badge)
|
||||
status_badge = UiKit.button("状态", 0.0) # 角落小件豁免宽度基准(同调试角标)
|
||||
status_badge = UiKit.button("状态", 0.0) # 角落小件豁免宽度基准
|
||||
status_badge.add_theme_font_size_override("font_size", UiKit.FS_HINT)
|
||||
status_badge.tooltip_text = "查看钥石与永久强化进度(只读)"
|
||||
status_badge.visible = false # 显式初始化——非对局期不误现(可见性归组合根同步)
|
||||
corner.add_child(status_badge)
|
||||
# 右下角锚定(迭代 18 卡⑦):MINSIZE 预设须在入树后调用——容器出树的最小尺寸缓存陈旧为 0
|
||||
#(裸 Button 无此病,容器延迟到首轮排序才重算),零尺寸锚角会使钮对悬出屏边;
|
||||
# grow 向左上=后续最小尺寸变化向屏内生长。预设延迟帧尾——届时容器最小尺寸已就绪
|
||||
corner.grow_horizontal = Control.GROW_DIRECTION_BEGIN
|
||||
corner.grow_vertical = Control.GROW_DIRECTION_BEGIN
|
||||
corner.set_anchors_and_offsets_preset.call_deferred(Control.PRESET_BOTTOM_RIGHT, Control.PRESET_MODE_MINSIZE, 16)
|
||||
board_area.add_child(corner)
|
||||
corner_wrap.add_child(corner)
|
||||
# M8(UI 落码批):棋盘底常驻操作提示条(demo ⑦——文案经 board_view 输入代码证实;
|
||||
# 旧 chord 一次性 toast 提示退役归此常驻条;审计第 7 条用户批)
|
||||
var hint := PanelContainer.new()
|
||||
|
||||
@@ -155,7 +155,7 @@ func _build() -> void:
|
||||
var title := UiKit.label("调试",UiKit.FS_TITLE, true, UiKit.WARM)
|
||||
box.add_child(title)
|
||||
var desc := UiKit.label(
|
||||
"开发调试专用(开始屏右下角/战斗屏 HUD/关卡地图屏「调试」角标均可开)。当局数据=本局只读投影,种子即本局种子唯一查看位。\n百分比叠加基础值:攻击 %d / 生命 %d。影响所有模式(手动与模拟),不落盘。" % [_base_atk, _base_hp],
|
||||
"开发调试专用(UI 最顶层「调试」浮层角标随时可开——任何界面不遮挡)。当局数据=本局只读投影,种子即本局种子唯一查看位。\n百分比叠加基础值:攻击 %d / 生命 %d。影响所有模式(手动与模拟),不落盘。" % [_base_atk, _base_hp],
|
||||
13, false, UiKit.WARM_SOFT)
|
||||
box.add_child(desc)
|
||||
box.add_child(HSeparator.new())
|
||||
|
||||
@@ -47,7 +47,6 @@ var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图
|
||||
var _hover_id := -1 # 悬停预承诺候选(-1 = 无)
|
||||
var abandon_btn: Button # 放弃入口(可见性归组合根 set_abandon_available——只在冒险模式开)
|
||||
var status_badge: Button # 状态面板入口角标(迭代 17 卡③ P1 丁——顶栏 GP 徽右侧;连接归组合根)
|
||||
var debug_badge: Button # 调试浮窗入口角标(迭代 18 卡⑦ P2 甲——调试门控;状态角标同形制)
|
||||
var _abandon_timer := ArmedTimer.new() # 放弃确认窗(T3/D3 P4 乙——_process 帧驱动倒计时机制收口;窗口=CONFIRM_WINDOW_S)
|
||||
var _node_icons := {} # 节点图标贴图(load_tex 守卫——缺位 null → 字形回退,冒烟/无素材检出安全)
|
||||
var _noise_rect: TextureRect # 屏底石纹(换层色板渐变承载面——null = 纯色回退无挂点)
|
||||
@@ -99,7 +98,7 @@ func _init() -> void:
|
||||
gp_box.add_child(gp_row)
|
||||
_gp_value = UiKit.label("",UiKit.FS_BODY, true, UiKit.INK_ON_GOLD)
|
||||
gp_row.add_child(_gp_value)
|
||||
# 状态面板入口角标(迭代 17 卡③ P1 丁——顶栏常驻;debug 角标同形制:紧凑钮豁免宽度基准+字号降档。
|
||||
# 状态面板入口角标(迭代 17 卡③ P1 丁——顶栏常驻;2026-10-16 调试角标迁全局浮层后本屏只留状态。
|
||||
# 置灰守卫归组合根 _sync_status_entry(其他模态开着=不可点;本屏自身的登记开态不计——has_open_excluding);
|
||||
# 信号连接归组合根(视图零连接))
|
||||
status_badge = UiKit.button("状态", 0.0)
|
||||
@@ -107,14 +106,6 @@ func _init() -> void:
|
||||
status_badge.tooltip_text = "查看钥石与永久强化进度(只读)"
|
||||
status_badge.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||
top.add_child(status_badge)
|
||||
# 调试浮窗入口角标(迭代 18 卡⑦ P2 甲——顶栏状态角标右侧;17卡③同形制:紧凑钮豁免宽度基准+
|
||||
# 字号降档。可见性/置灰归组合根 _sync_status_entry(调试门控/其他模态开着=置灰——排除式
|
||||
# 开态查询,本屏自身开态不计);信号连接归组合根(视图零连接))
|
||||
debug_badge = UiKit.button("调试", 0.0)
|
||||
debug_badge.add_theme_font_size_override("font_size", UiKit.FS_HINT)
|
||||
debug_badge.tooltip_text = "打开调试浮窗(当局数据/种子/数值调整)"
|
||||
debug_badge.size_flags_vertical = Control.SIZE_SHRINK_CENTER
|
||||
top.add_child(debug_badge)
|
||||
_title = UiKit.label(TITLE_FORK,UiKit.FS_SUB, true, UiKit.WARM)
|
||||
_title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
box.add_child(_title)
|
||||
|
||||
@@ -295,8 +295,8 @@ func _smoke_boot_chain() -> void:
|
||||
# 入口=开始屏右下角「调试」角标+对局中两屏角标)
|
||||
check(not main.debug_overlay.visible,
|
||||
"V2f 调试浮窗 boot 不自动开(菜单优先)〔2026-10-16 用户令〕")
|
||||
check(main._menu_screen.dbgbtn != null and main._menu_screen.dbgbtn.visible,
|
||||
"V2f 开始屏调试角标可见(菜单层调试入口在座)〔2026-10-16 用户令〕")
|
||||
check(main.debug_badge != null and main.debug_badge.visible,
|
||||
"V2f 调试浮层角标 boot 可见(全局浮层入口在座)〔2026-10-16 用户令〕")
|
||||
main.queue_free()
|
||||
await process_frame
|
||||
for p in ["user://smoke_boot_chain.json", "user://smoke_boot_chain.json.tmp"]:
|
||||
|
||||
@@ -46,8 +46,8 @@ func _ready() -> void:
|
||||
add_child(main)
|
||||
await get_tree().process_frame
|
||||
var t_ui_ready := Time.get_ticks_msec() - t0
|
||||
# 调试浮窗 boot 不开(2026-10-16 用户令修正:菜单优先——入口=开始屏右下角「调试」角标+
|
||||
# 对局中两屏角标;角标存在性判据见设置面段)
|
||||
# 调试浮窗 boot 不开(2026-10-16 用户令修正:菜单优先——入口=UI 最顶层全局浮层角标,
|
||||
# 任何 UI 不遮挡;浮层角标遮挡判据见设置面段)
|
||||
if main.debug_overlay.visible:
|
||||
_problems.append("调试浮窗 boot 自动开(菜单优先失守)")
|
||||
# ---- 营地购买合成点击路径(元进度实现批——campbtn/购买/关闭全走真实按钮信号路径;
|
||||
@@ -171,10 +171,10 @@ func _ready() -> void:
|
||||
_problems.append("音量滑杆未实时生效(master bus db %f ≠ %f)" % [AudioServer.get_bus_volume_db(master_idx), expect_db])
|
||||
if absf(iso_s.volume_linear - 0.3) > 0.001:
|
||||
_problems.append("音量未入 store(%f ≠ 0.3)" % iso_s.volume_linear)
|
||||
# 调试入口断言(2026-10-16 用户令:开始屏右下角「调试」角标恢复为菜单层调试入口——
|
||||
# iter18 卡⑦ P2 甲迁宿主两屏+本层零入口的旧形态已废;角标点击开浮窗路径归 tune_probe ⑨)
|
||||
if ProbeUiUtil.find_button(main._start_overlay, "调试", "prefix") == null:
|
||||
_problems.append("开始层调试角标缺失(调试入口失守)")
|
||||
# 调试入口断言(2026-10-16 用户令:全局浮层角标=UI 最顶层、任何 UI 不遮挡——本段设置面
|
||||
# 开中正是遮挡场景:浮层角标此时仍应可见;点击开浮窗路径归 tune_probe)
|
||||
if main.debug_badge == null or not main.debug_badge.visible:
|
||||
_problems.append("设置面开中调试浮层角标不可见(最顶层浮层失守——被遮挡)")
|
||||
var settings_close: Button = ProbeUiUtil.find_button(main.settings_overlay, "返回", "prefix")
|
||||
if settings_close == null:
|
||||
_problems.append("设置面返回按钮缺失")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Date: 2026-09-11(加成应用契约 = 组合根单一应用路径)
|
||||
# 调试浮窗场景探针(原数值调整板收进 debug_overlay;
|
||||
# 角标挂宿主 / 启动即开 / 当局数据只读区块 / 输入锁防护配套):
|
||||
# 驱动真实 UI 路径——①角标开窗(开始屏右下角「调试」钮点击路径)+悬浮菜单之上+登记册末位树序
|
||||
# 驱动真实 UI 路径——①全局浮层角标开窗(UI 最顶层「调试」钮点击路径)+悬浮菜单之上+登记册末位树序
|
||||
# ②滑条联动 ③应用 ④重置 ⑤批量模拟 N=10 ⑥关闭 ⑦hero 表运行期不可变
|
||||
# ⑧单次加成生效(经 _start_adventure_from_menu 真实路径+显式种子钉死)+开冒险路径显式关浮窗
|
||||
# ⑨对局中可开(战斗屏角标真实信号路径)+棋盘输入不锁+状态角标不置灰(停机点回归闸)
|
||||
@@ -40,14 +40,13 @@ func _ready() -> void:
|
||||
var base_hp := int(main.db.hero.max_hp)
|
||||
var boosted_atk := base_atk * 2 # 攻击滑条 100 → ×2
|
||||
var boosted_hp := int(round(base_hp * 1.5)) # 生命滑条 50 → +50%
|
||||
# ① 角标开窗(2026-10-16 用户令修正:boot 菜单优先不开浮窗——开始屏右下角「调试」角标
|
||||
# 真实点击路径开窗;悬浮于菜单之上——开始层不隐藏;树序新基准=登记册末位(确认弹窗之后=
|
||||
# 绘制序最上);旧「_show_debug_overlay 打开+开始层在屏」断言随入口迁宿主换代——打开动作
|
||||
# 本身移至 ⑨ 角标真实路径承载)
|
||||
main._menu_screen.dbgbtn.pressed.emit()
|
||||
# ① 全局浮层角标开窗(2026-10-16 用户令:调试入口=UI 最顶层浮层,任何 UI 不遮挡——
|
||||
# main 直接子层、LAYER_CONTRACT 末位 float 类;boot 菜单优先不开浮窗,角标真实点击路径开窗;
|
||||
# 悬浮于菜单之上——开始层不隐藏;树序新基准=登记册末位(确认弹窗之后=绘制序最上))
|
||||
main.debug_badge.pressed.emit()
|
||||
await get_tree().process_frame
|
||||
if not main.debug_overlay.visible:
|
||||
problems.append("开始屏调试角标点击后浮窗未开(菜单层调试入口失守)")
|
||||
problems.append("调试浮层角标点击后浮窗未开(全局浮层入口失守)")
|
||||
if not main._start_overlay.visible:
|
||||
problems.append("开始覆盖层被隐藏——浮窗应悬浮于菜单之上(14.5 形态失守)")
|
||||
if main.debug_overlay.get_index() < main.confirm_dialog.get_index():
|
||||
@@ -114,9 +113,9 @@ func _ready() -> void:
|
||||
# ⑨ 对局中可开(18卡⑦ P2 甲/T2 防护——S1+ 停机点回归闸):战斗屏角标真实信号路径开窗;
|
||||
# 棋盘输入不锁、状态角标不置灰(旧 has_open 判据在「默认开×遮挡复活」下必锁死的破约回归面);
|
||||
# 对局中批量模拟/两层调试两钮禁用;当局数据六项与只读访问器逐项一致;关闭钮真实路径收窗恢复
|
||||
var dbg_badge: Button = main.board_zone.debug_badge
|
||||
var dbg_badge: Button = main.debug_badge
|
||||
if dbg_badge == null or not dbg_badge.visible:
|
||||
problems.append("战斗屏调试角标未点亮(P2 甲恒开门控失守)")
|
||||
problems.append("对局中调试浮层角标未点亮(全局浮层最顶层失守)")
|
||||
else:
|
||||
if dbg_badge.disabled:
|
||||
problems.append("战斗屏调试角标被置灰(T2 排除式判据失守)")
|
||||
|
||||
Reference in new issue
Block a user