33 lines
1.9 KiB
GDScript
33 lines
1.9 KiB
GDScript
## 营地顶栏小 HUD 栏(裁决 10——钥石余额常驻,最小集形态):承载 UiKit.keystone_badge(工厂单点)。
|
||
## 读数只经 camp_data() 投影单口(禁第二账本、禁视图自算);刷新挂卡④ CampRefreshBus 单口
|
||
## (bus 目标册成员——显式触发才变,禁 _ready 自刷/自持第二入口,契约 5);载体=PRESET_TOP_WIDE 48px 浮层。
|
||
class_name CampHudBand
|
||
extends Control
|
||
|
||
var _badge: PanelContainer
|
||
|
||
|
||
func _init() -> void:
|
||
set_anchors_preset(Control.PRESET_TOP_WIDE)
|
||
custom_minimum_size = Vector2(0, 48) # 高 48px 浮层覆盖、不挤压画面(camp.md §顶栏)
|
||
mouse_filter = Control.MOUSE_FILTER_IGNORE # HUD 栏不挡场景命中区(浮层覆盖语义)
|
||
UiKit.camp_hud_band_surface(self) # 栏体色面——整件外观单一出口(色值与 α、铺满、不吃点击、挂载全在出口内);先入=绘制序底,徽章后入不被盖
|
||
_badge = UiKit.keystone_badge("钥石 0")
|
||
var dock := HBoxContainer.new() # 右对齐容器承载徽章(Q2 已裁乙——位数增宽自然向左展;摆位机制先例=confirm_dialog 钮行同款容器 alignment)
|
||
dock.set_anchors_preset(Control.PRESET_FULL_RECT)
|
||
dock.offset_right = -12.0 # 右缘内缩 12px(UiKit 钮间距同档——白名单 3)
|
||
dock.alignment = BoxContainer.ALIGNMENT_END
|
||
dock.mouse_filter = Control.MOUSE_FILTER_IGNORE # 容器自身默认 STOP——与出口内 IGNORE 是两个点,必须同批落(漏一处顶排物件点不动)
|
||
dock.add_child(_badge)
|
||
add_child(dock)
|
||
|
||
|
||
## 余额写入(格式串=既有消费面同款「钥石 %d」——badge 工厂约定单点,禁第二格式串)
|
||
func set_balance(v: int) -> void:
|
||
_badge.value_label.text = "钥石 %d" % v
|
||
|
||
|
||
## 刷新单口落点(CampRefreshBus 目标册成员——显式触发才变,契约 5 刷新时机①②③同一闸)
|
||
func refresh_camp(camp_data: Dictionary) -> void:
|
||
set_balance(int(camp_data.get("balance", 0)))
|