# VERTICAL SLICE - NOT FOR PRODUCTION # 实现 GDD:design/ux/battle.md(B 区结算明细回看——模态 overlay:完整流水逐行、只读、关闭恢复; # pattern 6 模态 overlay 层级纪律——打开时组合根隐藏上方遮挡层 + 锁棋盘输入,场景级断言承载)。 # Date: 2026-09-12 class_name SettlementReviewOverlay extends Control signal closed var _log: RichTextLabel func _init() -> void: var dim := ColorRect.new() dim.color = Color(UiKit.DIM, 0.62) dim.set_anchors_preset(Control.PRESET_FULL_RECT) dim.gui_input.connect(_on_dim_gui_input) add_child(dim) var center := CenterContainer.new() center.set_anchors_preset(Control.PRESET_FULL_RECT) dim.add_child(center) var panel := PanelContainer.new() center.add_child(panel) var box := VBoxContainer.new() box.custom_minimum_size = Vector2(760, 560) box.add_theme_constant_override("separation", 6) panel.add_child(box) box.add_child(UiKit.label("结算明细回看(完整流水 · 逐行归因)", 18, true)) _log = RichTextLabel.new() _log.bbcode_enabled = true _log.size_flags_vertical = Control.SIZE_EXPAND_FILL _log.clip_contents = true _log.scroll_active = true box.add_child(_log) var close_btn := UiKit.button("关闭") close_btn.pressed.connect(close) box.add_child(close_btn) visible = false func is_open() -> bool: return visible func open(full_bb_text: String) -> void: _log.clear() _log.append_text(full_bb_text) visible = true func close() -> void: if not visible: return visible = false closed.emit() func _on_dim_gui_input(ev: InputEvent) -> void: if ev is InputEventMouseButton and ev.pressed: close()