新增弟子/建筑/订单/炼丹/库房信息卡脚本与填充接口

This commit is contained in:
2026-09-09 21:08:47 +08:00
parent 38319d6478
commit 257aeccd2a
15 changed files with 146 additions and 52 deletions
@@ -0,0 +1,39 @@
extends Control
## 测试数据:模拟 sect_data 里的嵌套资源(分类 → 子项)
var test_resources := [
{"name": "粮草", "items": [{"name": "", "quantity": 10}, {"name": "蔬菜", "quantity": 20}]},
{"name": "丹药", "items": [{"name": "聚气丹", "quantity": 5}]},
]
func _ready() -> void:
var tree: Tree = $ScrollContainer/Tree
tree.hide_root = true # 隐藏内部根,顶部就是"粮草/丹药"
tree.columns = 2
tree.item_selected.connect(_on_item_selected)
_refresh(tree)
pass
## 每次数据变化后全量重建(简单可靠)
func _refresh(tree: Tree) -> void:
tree.clear()
for category: Dictionary in test_resources:
var cat_item := tree.create_item() # 无父 = 顶级项(挂在隐藏根下)
cat_item.set_text(0, category["name"])
cat_item.set_metadata(0, {"type": "category"})
for sub: Dictionary in category["items"]:
var item := tree.create_item(cat_item) # 子项
item.set_text(0, sub["name"])
item.set_text(1, str(sub["quantity"]))
item.set_metadata(0, sub) # 存整条数据便于取用
## 动态新增一项后刷新
func _on_add_button() -> void: # 测试:手动调一次
test_resources[0]["items"].append({"name": "灵米", "quantity": 99})
_refresh($ScrollContainer/Tree)
func _on_item_selected() -> void:
var tree: Tree = $ScrollContainer/Tree
var selected := tree.get_selected()
if selected != null:
print(selected.get_text(0), "", selected.get_metadata(0))