feat: 创建 upgrade 数据resource,编写upgrade_panel.gd动态生成升级卡片
This commit is contained in:
@@ -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"
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
for child in items_container.get_children():
|
||||||
|
child.queue_free()
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
for i in 4:
|
||||||
func _process(delta: float) -> void:
|
var random_upg := upgrade_list.pick_random() as ItemUpgrade
|
||||||
pass
|
var card_instance := UPGRADE_CARD_SCENE.instantiate() as UpgradeCard
|
||||||
|
items_container.add_child(card_instance)
|
||||||
|
card_instance.item_data = random_upg
|
||||||
|
|||||||
@@ -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")]
|
||||||
|
|||||||
Reference in New Issue
Block a user