iter8-二轮修改批(用户一轮目检四裁决实装):A 互斥确认弹窗化=ConfirmDialog 通用实底确认框(开新冒险/取消两钮,按钮换面 3s 机制退役)+main 三态接线+锁面入列;B 结算框/冒险终局实底面板化=BattleEndOverlay 石板皮面板(墨字判定行/GP 行/按钮列),金蜡封改面板头部静态徽记(坠落演出退役——落点被面板遮挡),纹章环/掸灰/旗收回锚点移屏心(fx 计数断言面不变);C 结算伤害数字突出=明细带 damage 行值放大 17px 朱红独立色(#d9402a——数字即信息主角);D1 退出游戏提级一级菜单(开始菜单与设置并行,设置面内退出移除);D2 设置开关换 UiKit toggle 按钮形态(全屏:开/关 文字随态)——click 探针三段同步(弹窗双路断言/退出层级断言/开关查找器换 Button)——闸:冒烟 596/0+run_all 15 套+六探针全绿 0err
This commit is contained in:
1 parent
931b7fa8fa
commit
2400dbe49e
9 files changed
+195
-80
No files matched your search
+34
-23
@@ -39,9 +39,8 @@ var _adventure_mode := false # 冒险模式标记(inter 层确认分派
|
||||
var logger = null # 试玩日志器(JSONL 持久化 + 卡死诊断转储——呈现层组件)
|
||||
var _level_active := false
|
||||
var _seed_edit: LineEdit
|
||||
var _lvbtn: Button # 开始冒险按钮句柄(迭代 8 卡③——有断点时互斥二次确认文案换面)
|
||||
var _resume_btn: Button # 继续上局按钮句柄(迭代 8 卡②——有断点才亮)
|
||||
var _lv_start_armed := false # 新冒险二次确认态(首击置位、二击提交、3s 超时回落——仿放弃确认)
|
||||
var confirm_dialog: ConfirmDialog # 通用确认弹窗(二轮修改批 A——新冒险互斥确认弹窗化)
|
||||
var _settlement_stop_pending := false # 卡⑥ 战斗胜利总结结算框挂起态(确认「下一节点」后进选路页)
|
||||
var _pending_candidates: Array = [] # 结算框挂起期的选路候选暂存(choices_presented 载荷)
|
||||
var _last_gain_amount := 0 # 最近一笔钱包入账(卡⑥ GP 增量取数面——wallet_changed gain 载荷)
|
||||
@@ -185,18 +184,21 @@ func _build_ui() -> void:
|
||||
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 卡④——最小设置面(音量/全屏/减动效/退出)
|
||||
settings_overlay = SettingsOverlay.new(settings_store) # 迭代 8 卡④——最小设置面(音量/全屏/减动效)
|
||||
add_child(settings_overlay)
|
||||
settings_overlay.closed.connect(_on_settings_closed)
|
||||
confirm_dialog = ConfirmDialog.new() # 二轮修改批 A——新冒险互斥确认弹窗
|
||||
add_child(confirm_dialog)
|
||||
confirm_dialog.confirmed.connect(_on_confirm_new_adventure)
|
||||
confirm_dialog.cancelled.connect(_on_confirm_cancelled)
|
||||
_modals = ModalStack.new()
|
||||
for m: Control in [legend_overlay, review_overlay, node_overlay, level_screen, _end_overlay, shop_overlay, camp_overlay, tune_panel, settings_overlay]:
|
||||
for m: Control in [legend_overlay, review_overlay, node_overlay, level_screen, _end_overlay, shop_overlay, camp_overlay, tune_panel, settings_overlay, confirm_dialog]:
|
||||
_register_modal(m)
|
||||
_tune_sim = TuneSimController.new(db, tune_panel, int(db.hero.max_hp))
|
||||
|
||||
var start: Dictionary = UiAssembler.build_start_overlay(self, db)
|
||||
_start_overlay = start.overlay
|
||||
_seed_edit = start.seed_edit
|
||||
_lvbtn = start.lvbtn
|
||||
_resume_btn = start.resumebtn
|
||||
start.lvbtn.pressed.connect(_start_adventure_from_menu)
|
||||
start.resumebtn.pressed.connect(_resume_from_menu) # 迭代 8 卡②——续玩入口
|
||||
@@ -205,6 +207,7 @@ func _build_ui() -> void:
|
||||
start.dbgbtn.visible = OS.get_environment("DS_DEBUG") == "1" # 迭代 8 卡④——调试入口默认隐藏门控(DS_DEBUG=1 点亮)
|
||||
start.campbtn.pressed.connect(_open_camp)
|
||||
start.settingsbtn.pressed.connect(_open_settings) # 迭代 8 卡④——最小设置面入口
|
||||
start.quitbtn.pressed.connect(_quit_game) # 二轮修改批 D1——退出游戏提级一级菜单
|
||||
|
||||
var inter: Dictionary = UiAssembler.build_inter_overlay(self)
|
||||
_inter_overlay = inter.overlay
|
||||
@@ -250,35 +253,44 @@ func _input_locked() -> bool:
|
||||
# 模态/非战斗期棋盘输入锁(各 overlay 自身可见即锁定)
|
||||
return legend_overlay.is_open() or review_overlay.is_open() or _end_overlay.is_open() \
|
||||
or node_overlay.visible or level_screen.visible or shop_overlay.visible or tune_panel.visible \
|
||||
or _start_overlay.visible or _inter_overlay.visible or settlement == null
|
||||
or _start_overlay.visible or _inter_overlay.visible or confirm_dialog.visible or settlement == null
|
||||
|
||||
|
||||
# ==================== 冒险模式入口(唯一试玩入口——单关测试直入口退役 2026-09-23 用户拍板)====================
|
||||
|
||||
func _start_adventure_from_menu() -> void:
|
||||
# 互斥二次确认(迭代 8 卡②③):有断点时开新冒险须两击——首击转确认态(文案换面+3s 超时回落,
|
||||
# 仿放弃确认形态),二击才提交;提交即弃旧断点(clear+写盘——「开新局」覆盖语义对盘面即时生效)
|
||||
if save_manager != null and save_manager.has_breakpoint() and not _lv_start_armed:
|
||||
_lv_start_armed = true
|
||||
if _lvbtn != null:
|
||||
_lvbtn.text = "已有未完冒险——再点一次开新冒险(旧断点将被覆盖)"
|
||||
get_tree().create_timer(3.0).timeout.connect(_reset_lv_confirm)
|
||||
# 互斥确认弹窗化(二轮修改批 A——用户目检裁决「弹窗提示」):有断点时开新冒险弹实底确认框,
|
||||
# 「开新冒险」提交(弃旧断点+写盘)/「取消」回菜单
|
||||
if save_manager != null and save_manager.has_breakpoint():
|
||||
var bp: Dictionary = save_manager.breakpoint_snapshot()
|
||||
confirm_dialog.open("已有未完冒险(第 %d 关)——开新冒险将覆盖旧断点" % maxi(1, int(bp.get("level_index", 1))),
|
||||
"开新冒险", "取消")
|
||||
return
|
||||
if save_manager != null:
|
||||
save_manager.clear_breakpoint()
|
||||
save_manager.write_to_disk()
|
||||
_lv_start_armed = false
|
||||
_start_overlay.visible = false
|
||||
_start_adventure()
|
||||
|
||||
|
||||
func _reset_lv_confirm() -> void:
|
||||
_lv_start_armed = false
|
||||
if _lvbtn != null:
|
||||
_lvbtn.text = "▶ 开始冒险(三关连探:地精洞窟 → 幽暗地域 → 灰矮人矿城)"
|
||||
func _on_confirm_new_adventure() -> void:
|
||||
confirm_dialog.close()
|
||||
if save_manager != null:
|
||||
save_manager.clear_breakpoint() # 提交即弃旧断点(覆盖语义对盘面即时生效)
|
||||
save_manager.write_to_disk()
|
||||
_start_overlay.visible = false
|
||||
_start_adventure()
|
||||
|
||||
|
||||
# 继续上局按钮可见性 = 断点在档态(迭代 8 卡②——启动读盘后与每次回开始菜单刷新;确认态随面复位)
|
||||
func _on_confirm_cancelled() -> void:
|
||||
confirm_dialog.close() # 回开始菜单(无状态变更)
|
||||
|
||||
|
||||
# 退出游戏(二轮修改批 D1——一级菜单入口;设置即时落盘后退出)
|
||||
func _quit_game() -> void:
|
||||
if settings_store != null:
|
||||
settings_store.save_settings()
|
||||
get_tree().quit()
|
||||
|
||||
|
||||
# 继续上局按钮可见性 = 断点在档态(迭代 8 卡②——启动读盘后与每次回开始菜单刷新)
|
||||
func _refresh_resume_button() -> void:
|
||||
if _resume_btn == null or save_manager == null:
|
||||
return
|
||||
@@ -287,7 +299,6 @@ func _refresh_resume_button() -> void:
|
||||
if has:
|
||||
var bp: Dictionary = save_manager.breakpoint_snapshot()
|
||||
_resume_btn.text = "▶ 继续上局(第 %d 关 · 自最近停点恢复)" % maxi(1, int(bp.get("level_index", 1)))
|
||||
_reset_lv_confirm()
|
||||
|
||||
|
||||
# 继续上局(迭代 8 卡②——卡① resume_adventure 的消费入口):断点重建至最近停点
|
||||
|
||||
Reference in new issue
Block a user