From c1fb348f07adfc51da849347fe2ebd508eb1805f Mon Sep 17 00:00:00 2001 From: chen Date: Thu, 10 Sep 2026 00:27:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=9D=A2=E6=9D=BF=E5=BC=9F?= =?UTF-8?q?=E5=AD=90=E5=8D=A1=E6=94=AF=E6=8C=81=20id=20=E5=AD=98=E5=8F=96?= =?UTF-8?q?=E4=B8=8E=E6=8C=89=20id=20=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 信号驱动) --- .../DisciplePanel/DiscipleInformation.gd | 5 ++ .../DiscipleInformationPanel.tscn | 1 + src/UI/Panels/Manager/Manager.gd | 48 +++++++++++-------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/UI/Panels/Manager/DisciplePanel/DiscipleInformation.gd b/src/UI/Panels/Manager/DisciplePanel/DiscipleInformation.gd index dbab5cc..1e69d5e 100644 --- a/src/UI/Panels/Manager/DisciplePanel/DiscipleInformation.gd +++ b/src/UI/Panels/Manager/DisciplePanel/DiscipleInformation.gd @@ -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 diff --git a/src/UI/Panels/Manager/DisciplePanel/DiscipleInformationPanel.tscn b/src/UI/Panels/Manager/DisciplePanel/DiscipleInformationPanel.tscn index 3aad7ed..6f39c65 100644 --- a/src/UI/Panels/Manager/DisciplePanel/DiscipleInformationPanel.tscn +++ b/src/UI/Panels/Manager/DisciplePanel/DiscipleInformationPanel.tscn @@ -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 diff --git a/src/UI/Panels/Manager/Manager.gd b/src/UI/Panels/Manager/Manager.gd index 150150e..a8c2c0a 100644 --- a/src/UI/Panels/Manager/Manager.gd +++ b/src/UI/Panels/Manager/Manager.gd @@ -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["弟子"]); @@ -42,12 +40,6 @@ func _ready() -> void: sect_resources["库房"] = inventory_panel_scene.instantiate(); 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() @@ -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 # 匹配唯一,删完即走