Files
gplan-2/game/presentation/views/board_zone_view.gd
T
DKChan d44fdd54c5 暂停层组B:两屏入口角标+has_open守卫+四探针断言+冒烟数据一致性(迭代17卡③T2)
- modal_stack.gd 新增 has_open_excluding(skip):排除式开态查询(地图屏系登记册模态成员=常态
  屏态,其上角标必须可点;只读查询零副作用,登记序/开合记账语义零改动)
- board_zone_view.gd 战斗屏 HUD 右下角+level_map_screen.gd 地图屏顶栏 GP 徽右——各一枚「暂停」
  角标(debug 角标同形制:UiKit.button 紧凑豁免宽度基准+FS_HINT 字号降档;可见性/置灰归组合根,
  信号连接归组合根 ADR-0001;非对局期显式不可见防菜单误现——P1 丁)
- main.gd 接线:两角标 pressed→_on_pause_badge_pressed(守卫兜底处理器:他层开着即拒开——
  常态防线=置灰,探针 emit 绕过 disabled 时由此兜住;地图屏开态经 has_open_excluding 不计自身)
  +_sync_pause_entry 单一同步点(可见性=_level_active∧屏态;置灰=has_open)挂模态开合单口与
  屏级互斥口/进局/离局/续玩五路径
- ui_struct_probe:pause 结构断言+只读性契约(游戏语义信号清单巡检——pressed/toggled/text/
  value/item/gui_input/focus/closed 十二名,白名单外零连接,合法连接恰 2=关闭钮+closed 外发)
  +零动效契约(子树零 AnimationPlayer+源码零 create_tween——R5/P4 甲)【首跑 L1 修正:全集
  巡检把 Godot 容器布局生命线连接(child_order_changed/item_rect_changed 等引擎自动脏标记)
  误判非法——收敛为信号名清单,任务书 v1.1「巡检信号名清单落码列全」本意】
- ui_input_probe case⑯:暂停层输入锁语义(角标真点击 press+release 开层→锁期挖掘零穿透→
  「继续」关层→同格挖掘重新到达;十七断言 PASS)【首跑 L1 修正:域恰 2 枚时 flag_t 带旗+dig_t
  揭开后零无旗格可取——case 挪全 case 之尾+前沿移位扩大可挖域兜底(板面扰动零波及)】
- ui_click_probe:战斗屏角标开合/守卫断言(图例开着=置灰+emit 兜底拒开)+地图屏角标一次性
  case(选路前开/关,地图屏选路态零扰动);ui_contrast_probe 增钥石徽深墨/烛光黄对(12 对全绿)
- smoke_all._pause_overlay_projection:暂停层投影==MetaProgression 访问器逐项(余额徽/锻造三行/
  工坊六行解锁态/天赋树概览——隔离档 smoke_meta 复用,+5 check)
- 任务书回填 T0 基线注记(冒烟 783/0·run_all 17 套·交集核对零命中,HEAD=44328b1 时点)
- T2 闸读数:冒烟 788/0(基线 783/0,+5 本批)· ui_input 十七断言 PASS · ui_struct 全绿 ·
  ui_contrast 12 对 PASS · ui_click 问题=0 · ui_layout_probe 退出码 0;纯呈现零数值=零 MC
2026-10-06 22:38:36 +08:00

101 lines
4.0 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VERTICAL SLICE - NOT FOR PRODUCTION
# 实现 GDD:design/ux/battle.md(D 区扫雷图 ~760×548 容器〔底行 520→548——停点前移批 2026-09-23,
# 原 A 区顶栏空间并入〕——顶部 AP 条 44px〔左:点阵+停手;
# 右:图例+弃图刷新〕、棋盘主体居中、toast 槽上缘内侧、演出层)。
# Date: 2026-09-12
# 高内聚边界:容器组合 + 信号转发——动作意图全部信号外发到组合根,零核心写调用。
class_name BoardZoneView
extends PanelContainer
var ap_bar: ApBarView
var board_view: BoardView
var toast: ToastStack
var fx: BoardFxView
var pause_badge: Button # 暂停层入口角标(迭代 17 卡③ P1 丁——debug 角标同形制;连接归组合根)
var _board_area: Control # resized 命名转发用(原 lambda 局部捕获——P1-3 转命名 2026-09-29)
signal action_requested(cell: Vector2i, kind: String)
signal stop_pressed
signal refresh_confirmed
signal legend_toggled
signal hover_forbidden(cell: Vector2i)
signal chord_attempted(cell: Vector2i)
func _init() -> void:
size_flags_horizontal = Control.SIZE_EXPAND_FILL
var vb := VBoxContainer.new()
vb.add_theme_constant_override("separation", 4)
add_child(vb)
ap_bar = ApBarView.new()
vb.add_child(ap_bar)
var board_area := Control.new()
board_area.size_flags_vertical = Control.SIZE_EXPAND_FILL
board_area.clip_contents = true
vb.add_child(board_area)
_board_area = board_area
board_area.resized.connect(_on_board_area_resized)
board_view = BoardView.new()
board_view.set_anchors_preset(Control.PRESET_FULL_RECT)
board_area.add_child(board_view)
fx = BoardFxView.new()
board_area.add_child(fx)
toast = ToastStack.new()
board_area.add_child(toast)
# 暂停层入口角标(迭代 17 卡③ P1 丁——战斗屏 HUD 右下角常驻;debug 角标同形制:紧凑钮豁免
# 宽度基准+字号降档+角距 16px。可见性/置灰归组合根 _sync_pause_entry(其他模态开着=置灰
# 不可点——has_open 守卫);信号连接归组合根(ADR-0001——装配器/视图零连接)
pause_badge = UiKit.button("暂停", 0.0) # 角落小件豁免宽度基准(同调试角标)
pause_badge.add_theme_font_size_override("font_size", UiKit.FS_HINT)
pause_badge.tooltip_text = "查看钥石与永久强化进度(只读)"
pause_badge.visible = false # 显式初始化——非对局期不误现(可见性归组合根同步)
pause_badge.set_anchors_and_offsets_preset(Control.PRESET_BOTTOM_RIGHT, Control.PRESET_MODE_MINSIZE, 16)
board_area.add_child(pause_badge)
# M8(UI 落码批):棋盘底常驻操作提示条(demo ⑦——文案经 board_view 输入代码证实;
# 旧 chord 一次性 toast 提示退役归此常驻条;审计第 7 条用户批)
var hint := PanelContainer.new()
hint.add_theme_stylebox_override("panel", UiKit.panel_flat(
Color(0.09, 0.07, 0.05, 0.82), UiKit.HINT_STRIP_EDGE, 0, 1, Vector4(12, 2, 12, 2)))
hint.size_flags_horizontal = Control.SIZE_SHRINK_CENTER
hint.mouse_filter = Control.MOUSE_FILTER_IGNORE
vb.add_child(hint)
var hl := UiKit.label("左键 挖掘 / 移动 · 右键 封印(不可逆) · 同格双击 快开",UiKit.FS_CAPTION, false, UiKit.WARM_FAINT)
hint.add_child(hl)
# 信号转发(组合根只接线一处)
board_view.action_requested.connect(_forward_action)
board_view.hover_forbidden.connect(_forward_hover)
board_view.chord_attempted.connect(_forward_chord)
ap_bar.stop_pressed.connect(_emit_stop_pressed)
ap_bar.refresh_confirmed.connect(_emit_refresh_confirmed)
ap_bar.legend_toggled.connect(_emit_legend_toggled)
func _on_board_area_resized() -> void:
board_view.set_cell_area(_board_area.size)
func _forward_action(c: Vector2i, kind: String) -> void:
action_requested.emit(c, kind)
func _forward_hover(c: Vector2i) -> void:
hover_forbidden.emit(c)
func _forward_chord(c: Vector2i) -> void:
chord_attempted.emit(c)
func _emit_stop_pressed() -> void:
stop_pressed.emit()
func _emit_refresh_confirmed() -> void:
refresh_confirmed.emit()
func _emit_legend_toggled() -> void:
legend_toggled.emit()