管理面板弟子卡支持 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
|
extends Control
|
||||||
|
|
||||||
|
var disciple_id: int;
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
custom_maximum_size = Vector2(180, 320);
|
custom_maximum_size = Vector2(180, 320);
|
||||||
custom_minimum_size = Vector2(180, 240);
|
custom_minimum_size = Vector2(180, 240);
|
||||||
pass;
|
pass;
|
||||||
|
|
||||||
func set_info(info: Dictionary):
|
func set_info(info: Dictionary):
|
||||||
|
disciple_id = info['id'];
|
||||||
$VBoxContainer/HBoxContainer/Name.text = info['name'];
|
$VBoxContainer/HBoxContainer/Name.text = info['name'];
|
||||||
$VBoxContainer/HBoxContainer2/Level.text = info['level']
|
$VBoxContainer/HBoxContainer2/Level.text = info['level']
|
||||||
$VBoxContainer/HBoxContainer3/GridContainer/MetalVal.text = str(info['metal'])
|
$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/WaterVal.text = str(info['water'])
|
||||||
$VBoxContainer/HBoxContainer3/GridContainer/FireVal.text = str(info['fire'])
|
$VBoxContainer/HBoxContainer3/GridContainer/FireVal.text = str(info['fire'])
|
||||||
$VBoxContainer/HBoxContainer3/GridContainer/EarthVal.text = str(info['earth'])
|
$VBoxContainer/HBoxContainer3/GridContainer/EarthVal.text = str(info['earth'])
|
||||||
|
|
||||||
|
#print(info)
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ grow_vertical = 2
|
|||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
theme_override_styles/panel = ExtResource("1_po3i5")
|
theme_override_styles/panel = ExtResource("1_po3i5")
|
||||||
script = ExtResource("2_6fig8")
|
script = ExtResource("2_6fig8")
|
||||||
|
metadata/discipleId = 0
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1066350214]
|
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1066350214]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
var test_disciple_table : Array[Dictionary] = [] # 弟子
|
|
||||||
var test_field_table : Array[Dictionary] = [] # 建筑
|
var test_field_table : Array[Dictionary] = [] # 建筑
|
||||||
var test_order_table : Array[Dictionary] = [] # 订单
|
var test_order_table : Array[Dictionary] = [] # 订单
|
||||||
var test_alchemy_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 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
|
var inventory_panel_scene := load("res://src/UI/Panels/Manager/InventoryPanel/InventoryPanel.tscn") as PackedScene
|
||||||
|
|
||||||
|
|
||||||
sect_resources["弟子"] = manager_panel_scene.instantiate();
|
sect_resources["弟子"] = manager_panel_scene.instantiate();
|
||||||
sect_resources["弟子"].name = "弟子";
|
sect_resources["弟子"].name = "弟子";
|
||||||
$TabContainer.add_child(sect_resources["弟子"]);
|
$TabContainer.add_child(sect_resources["弟子"]);
|
||||||
@@ -42,12 +40,6 @@ func _ready() -> void:
|
|||||||
sect_resources["库房"] = inventory_panel_scene.instantiate();
|
sect_resources["库房"] = inventory_panel_scene.instantiate();
|
||||||
sect_resources["库房"].name = "库房";
|
sect_resources["库房"].name = "库房";
|
||||||
$TabContainer.add_child(sect_resources["库房"]);
|
$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:
|
for e in test_field_table:
|
||||||
var d := field_info_scene.instantiate()
|
var d := field_info_scene.instantiate()
|
||||||
@@ -66,25 +58,12 @@ func _ready() -> void:
|
|||||||
d.set_alchemy_info(e)
|
d.set_alchemy_info(e)
|
||||||
sect_resources['炼丹'].add_info_card(d)
|
sect_resources['炼丹'].add_info_card(d)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func init_test_data() -> void:
|
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([
|
test_field_table.append_array([
|
||||||
{"name": "灵田", "弟子": 0},
|
{"name": "灵田", "弟子": 0},
|
||||||
{"name": "灵田", "弟子": 1},
|
{"name": "灵田", "弟子": 1},
|
||||||
@@ -129,3 +108,30 @@ func init_test_data() -> void:
|
|||||||
|
|
||||||
test_inventory.append_array([{"草药": test_sub_inventory1}, {"粮食": test_sub_inventory2}, {"丹药": test_sub_inventory3}]);
|
test_inventory.append_array([{"草药": test_sub_inventory1}, {"粮食": test_sub_inventory2}, {"丹药": test_sub_inventory3}]);
|
||||||
pass
|
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