新增弟子/建筑/订单/炼丹/库房信息卡脚本与填充接口
This commit is contained in:
@@ -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))
|
||||
Reference in New Issue
Block a user