管理面板弟子卡支持 id 存取与按 id 删除
- DiscipleInformation 新增 disciple_id 字段,set_info 时写入对应 Disciple 的 id - Manager 废弃 test_disciple_table 手动建卡,新增 add_disciple_card: Disciple 对象 → 信息字典(含 id/name/realm_name/五行)→ 实例化卡片 - 新增 remove_disciple_card(id):遍历 HFlowContainer 按 disciple_id 匹配摘除并销毁(供 disciple_removed 信号驱动)
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
extends Control
|
||||
|
||||
var disciple_id: int;
|
||||
|
||||
func _ready() -> void:
|
||||
custom_maximum_size = Vector2(180, 320);
|
||||
custom_minimum_size = Vector2(180, 240);
|
||||
pass;
|
||||
|
||||
func set_info(info: Dictionary):
|
||||
disciple_id = info['id'];
|
||||
$VBoxContainer/HBoxContainer/Name.text = info['name'];
|
||||
$VBoxContainer/HBoxContainer2/Level.text = info['level']
|
||||
$VBoxContainer/HBoxContainer3/GridContainer/MetalVal.text = str(info['metal'])
|
||||
@@ -13,4 +16,6 @@ func set_info(info: Dictionary):
|
||||
$VBoxContainer/HBoxContainer3/GridContainer/WaterVal.text = str(info['water'])
|
||||
$VBoxContainer/HBoxContainer3/GridContainer/FireVal.text = str(info['fire'])
|
||||
$VBoxContainer/HBoxContainer3/GridContainer/EarthVal.text = str(info['earth'])
|
||||
|
||||
#print(info)
|
||||
pass
|
||||
|
||||
@@ -15,6 +15,7 @@ grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_styles/panel = ExtResource("1_po3i5")
|
||||
script = ExtResource("2_6fig8")
|
||||
metadata/discipleId = 0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1066350214]
|
||||
layout_mode = 2
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
extends Control
|
||||
|
||||
var test_disciple_table : Array[Dictionary] = [] # 弟子
|
||||
var test_field_table : Array[Dictionary] = [] # 建筑
|
||||
var test_order_table : Array[Dictionary] = [] # 订单
|
||||
var test_alchemy_table : Array[Dictionary] = [] # 炼丹配方
|
||||
@@ -22,7 +21,6 @@ func _ready() -> void:
|
||||
var manager_panel_scene := load("res://src/UI/Panels/Manager/ManagerPanel.tscn") as PackedScene
|
||||
var inventory_panel_scene := load("res://src/UI/Panels/Manager/InventoryPanel/InventoryPanel.tscn") as PackedScene
|
||||
|
||||
|
||||
sect_resources["弟子"] = manager_panel_scene.instantiate();
|
||||
sect_resources["弟子"].name = "弟子";
|
||||
$TabContainer.add_child(sect_resources["弟子"]);
|
||||
@@ -43,12 +41,6 @@ func _ready() -> void:
|
||||
sect_resources["库房"].name = "库房";
|
||||
$TabContainer.add_child(sect_resources["库房"]);
|
||||
|
||||
for e in test_disciple_table:
|
||||
var d := disciple_info_scene.instantiate()
|
||||
d.set_info(e)
|
||||
sect_resources["弟子"].add_info_card(d)
|
||||
pass
|
||||
|
||||
for e in test_field_table:
|
||||
var d := field_info_scene.instantiate()
|
||||
d.set_field_info(e)
|
||||
@@ -66,25 +58,12 @@ func _ready() -> void:
|
||||
d.set_alchemy_info(e)
|
||||
sect_resources['炼丹'].add_info_card(d)
|
||||
pass
|
||||
|
||||
|
||||
|
||||
pass
|
||||
|
||||
|
||||
|
||||
func init_test_data() -> void:
|
||||
|
||||
test_disciple_table.append_array([
|
||||
{"name": "赵一", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "钱二", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "孙三", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "李四", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "周五", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "吴六", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15},
|
||||
{"name": "郑七", "gender": "男", "level": "练气一层", "metal": 0.5, "wood": 0.9, "water": 0.1, "fire": 0.2, "earth": 0.15}
|
||||
])
|
||||
|
||||
test_field_table.append_array([
|
||||
{"name": "灵田", "弟子": 0},
|
||||
{"name": "灵田", "弟子": 1},
|
||||
@@ -129,3 +108,30 @@ func init_test_data() -> void:
|
||||
|
||||
test_inventory.append_array([{"草药": test_sub_inventory1}, {"粮食": test_sub_inventory2}, {"丹药": test_sub_inventory3}]);
|
||||
pass
|
||||
|
||||
func add_disciple_card(d : Disciple) -> void:
|
||||
var ds := disciple_info_scene.instantiate()
|
||||
var info := {
|
||||
"id": d.id,
|
||||
"name": d.name,
|
||||
"gender" : "x",
|
||||
"level" : d.realm_name(),
|
||||
"metal" : int(d.get_attr("metal")),
|
||||
"wood" : int(d.get_attr("wood")),
|
||||
"water" : int(d.get_attr("water")),
|
||||
"fire" : int(d.get_attr("fire")),
|
||||
"earth" : int(d.get_attr("earth"))
|
||||
}
|
||||
ds.set_info(info)
|
||||
sect_resources["弟子"].add_info_card(ds)
|
||||
pass
|
||||
|
||||
func remove_disciple_card(id: int) -> void:
|
||||
var panel: Control = sect_resources["弟子"] # ManagerPanel 页
|
||||
var flow: Node = panel.get_node("ScrollContainer/HFlowContainer")
|
||||
|
||||
for child in flow.get_children():
|
||||
if child.disciple_id == id: # 指定项匹配
|
||||
flow.remove_child(child) # 1. 先从树摘除
|
||||
child.queue_free() # 2. 再排队销毁
|
||||
return # 匹配唯一,删完即走
|
||||
|
||||
Reference in New Issue
Block a user