feat: 创建 upgrade 数据resource,编写upgrade_panel.gd动态生成升级卡片

This commit is contained in:
luke358
2026-05-21 16:04:27 +08:00
parent ce3813c5dc
commit 1796d9e47d
14 changed files with 170 additions and 17 deletions
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://dfvsbd5jl31pt"]
[ext_resource type="Texture2D" uid="uid://byg3400qlcem6" path="res://assets/sprites/Upgrades/8.png" id="1_worpx"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="1_ynscf"]
[resource]
script = ExtResource("1_ynscf")
value = 1.0
descriptin = "+ 1%"
stat_id = "block_chance"
item_name = "Block"
item_icon = ExtResource("1_worpx")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://htj45csm68fo"]
[ext_resource type="Texture2D" uid="uid://dn68qq5evmvwa" path="res://assets/sprites/Upgrades/12.png" id="1_6nlt1"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_b4rq5"]
[resource]
script = ExtResource("2_b4rq5")
value = 1.0
descriptin = "+ 1"
stat_id = "damage"
item_name = "Damage"
item_icon = ExtResource("1_6nlt1")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://bwxjxrmg4hkfx"]
[ext_resource type="Texture2D" uid="uid://k3qfoarie5u0" path="res://assets/sprites/Upgrades/7.png" id="1_wtmxu"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_hlrix"]
[resource]
script = ExtResource("2_hlrix")
value = 1.0
descriptin = "+ 1"
stat_id = "harvesting"
item_name = "Harvesting"
item_icon = ExtResource("1_wtmxu")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://d2x2dbdfls585"]
[ext_resource type="Texture2D" uid="uid://513vy8yuf2c3" path="res://assets/sprites/Upgrades/6.png" id="1_x3r4g"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_fqyel"]
[resource]
script = ExtResource("2_fqyel")
value = 1.0
descriptin = "+ 1"
stat_id = "health"
item_name = "Health"
item_icon = ExtResource("1_x3r4g")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://3pjreo5epl8m"]
[ext_resource type="Texture2D" uid="uid://ceccthrgto2um" path="res://assets/sprites/Upgrades/13.png" id="1_spl5c"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_8r7f1"]
[resource]
script = ExtResource("2_8r7f1")
value = 1.0
descriptin = "+ 1"
stat_id = "hp_regen"
item_name = "HP Regen"
item_icon = ExtResource("1_spl5c")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://cq276vsvx4uld"]
[ext_resource type="Texture2D" uid="uid://dac1qxk0rktmg" path="res://assets/sprites/Upgrades/11.png" id="1_y6yk3"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_cmyrk"]
[resource]
script = ExtResource("2_cmyrk")
value = 5.0
descriptin = "+ 5"
stat_id = "speed"
item_name = "Speed"
item_icon = ExtResource("1_y6yk3")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://cgusn8qne4kjl"]
[ext_resource type="Texture2D" uid="uid://dxl550mv1d5l6" path="res://assets/sprites/Upgrades/3.png" id="1_co2m3"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_qhb0c"]
[resource]
script = ExtResource("2_qhb0c")
value = 1.0
descriptin = "+ 1%"
stat_id = "life_steal"
item_name = "Life Steal"
item_icon = ExtResource("1_co2m3")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
@@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="ItemUpgrade" format=3 uid="uid://buvdtarq3qu2j"]
[ext_resource type="Texture2D" uid="uid://dxl550mv1d5l6" path="res://assets/sprites/Upgrades/3.png" id="1_2jex5"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_dk47u"]
[resource]
script = ExtResource("2_dk47u")
value = 1.0
descriptin = "+ 1%"
stat_id = "life_steal"
item_name = "Life Steal"
item_icon = ExtResource("1_2jex5")
item_type = 1
metadata/_custom_type_script = "uid://ti87pqqmd7ro"
+11
View File
@@ -0,0 +1,11 @@
extends ItemBase
class_name ItemUpgrade
@export var value: float
@export var descriptin: String
@export var stat_id: String
func apply_upgrade() -> void:
var current_value := Global.player.stats.get(stat_id) as float
var new_value := float(value) + float(current_value)
Global.player.stats.set(stat_id, new_value)
@@ -0,0 +1 @@
uid://ti87pqqmd7ro
+11 -6
View File
@@ -1,11 +1,16 @@
extends Panel extends Panel
class_name UpgradeCard class_name UpgradeCard
# Called when the node enters the scene tree for the first time. @export var item_data: ItemUpgrade: set = _set_data
func _ready() -> void:
pass # Replace with function body. @onready var item_icon: TextureRect = %Icon
@onready var item_name: Label = %Name
@onready var item_description: Label = %Description
# Called every frame. 'delta' is the elapsed time since the previous frame. func _set_data(value: ItemUpgrade) -> void:
func _process(delta: float) -> void: item_data = value
pass item_icon.texture = item_data.item_icon
item_name.text = item_data.item_name
item_description.text = item_data.descriptin
+3
View File
@@ -31,6 +31,7 @@ theme_override_constants/margin_bottom = 8
layout_mode = 2 layout_mode = 2
[node name="Icon" type="TextureRect" parent="MarginContainer/Control" unique_id=1868739971] [node name="Icon" type="TextureRect" parent="MarginContainer/Control" unique_id=1868739971]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 100) custom_minimum_size = Vector2(100, 100)
layout_mode = 0 layout_mode = 0
offset_right = 40.0 offset_right = 40.0
@@ -40,6 +41,7 @@ expand_mode = 1
stretch_mode = 5 stretch_mode = 5
[node name="Name" type="Label" parent="MarginContainer/Control" unique_id=1952735558] [node name="Name" type="Label" parent="MarginContainer/Control" unique_id=1952735558]
unique_name_in_owner = true
layout_mode = 0 layout_mode = 0
offset_left = 100.0 offset_left = 100.0
offset_top = 10.0 offset_top = 10.0
@@ -50,6 +52,7 @@ label_settings = SubResource("LabelSettings_mkexl")
vertical_alignment = 1 vertical_alignment = 1
[node name="Description" type="Label" parent="MarginContainer/Control" unique_id=1620881988] [node name="Description" type="Label" parent="MarginContainer/Control" unique_id=1620881988]
unique_name_in_owner = true
modulate = Color(0.827451, 0.9098039, 0.17254902, 1) modulate = Color(0.827451, 0.9098039, 0.17254902, 1)
layout_mode = 0 layout_mode = 0
offset_left = 100.0 offset_left = 100.0
+16 -6
View File
@@ -1,11 +1,21 @@
extends Panel extends Panel
class_name UpgradePanel class_name UpgradePanel
# Called when the node enters the scene tree for the first time. const UPGRADE_CARD_SCENE = preload("uid://bfohai4xgom8w")
@export var upgrade_list: Array[ItemUpgrade]
@onready var items_container: HBoxContainer = %ItemsContainer
func _ready() -> void: func _ready() -> void:
pass # Replace with function body. load_upgrades()
func load_upgrades() -> void:
# Called every frame. 'delta' is the elapsed time since the previous frame. for child in items_container.get_children():
func _process(delta: float) -> void: child.queue_free()
pass
for i in 4:
var random_upg := upgrade_list.pick_random() as ItemUpgrade
var card_instance := UPGRADE_CARD_SCENE.instantiate() as UpgradeCard
items_container.add_child(card_instance)
card_instance.item_data = random_upg
+16 -5
View File
@@ -3,6 +3,15 @@
[ext_resource type="PackedScene" uid="uid://cp1haphh1gj8t" path="res://scenes/ui/stats_container/stats_container.tscn" id="1_6gbsu"] [ext_resource type="PackedScene" uid="uid://cp1haphh1gj8t" path="res://scenes/ui/stats_container/stats_container.tscn" id="1_6gbsu"]
[ext_resource type="PackedScene" uid="uid://bfohai4xgom8w" path="res://scenes/ui/upgrade_card/upgrade_card.tscn" id="1_52meh"] [ext_resource type="PackedScene" uid="uid://bfohai4xgom8w" path="res://scenes/ui/upgrade_card/upgrade_card.tscn" id="1_52meh"]
[ext_resource type="Script" uid="uid://ybrs54qn38co" path="res://scenes/ui/upgrade_panel/upgrade_panel.gd" id="1_l8hix"] [ext_resource type="Script" uid="uid://ybrs54qn38co" path="res://scenes/ui/upgrade_panel/upgrade_panel.gd" id="1_l8hix"]
[ext_resource type="Script" uid="uid://ti87pqqmd7ro" path="res://resources/items/upgrades/item_upgrade.gd" id="2_aghkh"]
[ext_resource type="Resource" uid="uid://dfvsbd5jl31pt" path="res://resources/items/upgrades/data/upgrade_block_1.tres" id="3_evmld"]
[ext_resource type="Resource" uid="uid://htj45csm68fo" path="res://resources/items/upgrades/data/upgrade_damage_1.tres" id="4_t2jfx"]
[ext_resource type="Resource" uid="uid://bwxjxrmg4hkfx" path="res://resources/items/upgrades/data/upgrade_harvesting_1.tres" id="5_cehub"]
[ext_resource type="Resource" uid="uid://d2x2dbdfls585" path="res://resources/items/upgrades/data/upgrade_health_1.tres" id="6_078e8"]
[ext_resource type="Resource" uid="uid://3pjreo5epl8m" path="res://resources/items/upgrades/data/upgrade_hp_regen_1.tres" id="7_jevkw"]
[ext_resource type="Resource" uid="uid://cq276vsvx4uld" path="res://resources/items/upgrades/data/upgrade_life_steal_1.tres" id="8_h4hr2"]
[ext_resource type="Resource" uid="uid://cgusn8qne4kjl" path="res://resources/items/upgrades/data/upgrade_luck_3.tres" id="9_lndip"]
[ext_resource type="Resource" uid="uid://buvdtarq3qu2j" path="res://resources/items/upgrades/data/upgrade_speed_5.tres" id="10_23ymm"]
[sub_resource type="LabelSettings" id="LabelSettings_52meh"] [sub_resource type="LabelSettings" id="LabelSettings_52meh"]
font_size = 120 font_size = 120
@@ -14,6 +23,7 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("1_l8hix") script = ExtResource("1_l8hix")
upgrade_list = Array[ExtResource("2_aghkh")]([ExtResource("3_evmld"), ExtResource("4_t2jfx"), ExtResource("5_cehub"), ExtResource("6_078e8"), ExtResource("7_jevkw"), ExtResource("8_h4hr2"), ExtResource("9_lndip"), ExtResource("10_23ymm")])
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=717346648] [node name="MarginContainer" type="MarginContainer" parent="." unique_id=717346648]
layout_mode = 1 layout_mode = 1
@@ -39,20 +49,21 @@ text = "wave completed"
label_settings = SubResource("LabelSettings_52meh") label_settings = SubResource("LabelSettings_52meh")
horizontal_alignment = 1 horizontal_alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/VBoxContainer" unique_id=1404961884] [node name="ItemsContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/VBoxContainer" unique_id=1404961884]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 24 theme_override_constants/separation = 24
[node name="UpgradeCard" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer" unique_id=816521847 instance=ExtResource("1_52meh")] [node name="UpgradeCard" parent="MarginContainer/HBoxContainer/VBoxContainer/ItemsContainer" unique_id=816521847 instance=ExtResource("1_52meh")]
layout_mode = 2 layout_mode = 2
[node name="UpgradeCard2" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer" unique_id=1406935808 instance=ExtResource("1_52meh")] [node name="UpgradeCard2" parent="MarginContainer/HBoxContainer/VBoxContainer/ItemsContainer" unique_id=1406935808 instance=ExtResource("1_52meh")]
layout_mode = 2 layout_mode = 2
[node name="UpgradeCard3" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer" unique_id=541592257 instance=ExtResource("1_52meh")] [node name="UpgradeCard3" parent="MarginContainer/HBoxContainer/VBoxContainer/ItemsContainer" unique_id=541592257 instance=ExtResource("1_52meh")]
layout_mode = 2 layout_mode = 2
[node name="UpgradeCard4" parent="MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer" unique_id=813421337 instance=ExtResource("1_52meh")] [node name="UpgradeCard4" parent="MarginContainer/HBoxContainer/VBoxContainer/ItemsContainer" unique_id=813421337 instance=ExtResource("1_52meh")]
layout_mode = 2 layout_mode = 2
[node name="StatsContainer" parent="MarginContainer/HBoxContainer" unique_id=827713059 instance=ExtResource("1_6gbsu")] [node name="StatsContainer" parent="MarginContainer/HBoxContainer" unique_id=827713059 instance=ExtResource("1_6gbsu")]