## VERTICAL SLICE - NOT FOR PRODUCTION ## B 区结算明细带壳——结算期逐行文字列表退役后保留挖掘期摘要位与冒险流程叙述行承载(append_bb)。 class_name BattleLogView extends PanelContainer var _db var _band_h_dig := 0 var _band_h_settle := 0 var _log: RichTextLabel var _summary: Label var _hint: Label var _mode := "dig" # dig = 收起摘要 / settle = 展开空带(模式归组合根驱动;逐行流退役后 settle 态无逐行内容) func _init(db_ref, layout: BattleLayoutTable) -> void: _db = db_ref _band_h_dig = layout.log_band_h_dig _band_h_settle = layout.log_band_h_settle custom_minimum_size = Vector2(0, _band_h_dig) size_flags_vertical = Control.SIZE_SHRINK_END var vb := VBoxContainer.new() vb.add_theme_constant_override("separation", 2) add_child(vb) var head := HBoxContainer.new() vb.add_child(head) # 明细条灰字对深灰底实测 2.63:1 → 暗底双色墨制=暖白族 _summary = UiKit.label("",UiKit.FS_BODY, false, UiKit.WARM) _summary.custom_minimum_size = Vector2(0, _band_h_dig - 4) _summary.clip_text = true _summary.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS head.add_child(_summary) _hint = UiKit.label("上轮摘要(回看归「生涯」)",UiKit.FS_HINT, false, UiKit.WARM) # 辅助提示(≥14 辅助档)随上暖白 _hint.size_flags_horizontal = Control.SIZE_SHRINK_END head.add_child(_hint) _log = RichTextLabel.new() _log.bbcode_enabled = true _log.scroll_following = true _log.custom_minimum_size = Vector2(0, _band_h_settle - 26) _log.clip_contents = true _log.scroll_active = true vb.add_child(_log) _log.visible = false func set_mode(mode: String) -> void: if _mode == mode: return _mode = mode var settle := mode == "settle" _log.visible = settle _summary.visible = not settle custom_minimum_size = Vector2(0, _band_h_settle if settle else _band_h_dig) func mode() -> String: return _mode func clear() -> void: _log.clear() _summary.text = "" func append_bb(bb: String) -> void: _log.append_text(bb + "\n") func parsed_text() -> String: return _log.get_parsed_text()