61 lines
1.6 KiB
GDScript
61 lines
1.6 KiB
GDScript
# 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()
|