Files
gplan-2/game/presentation/views/battle_log_view.gd
T

71 lines
2.1 KiB
GDScript

## 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()