diff --git a/scenes/PerkCard.tscn b/scenes/PerkCard.tscn index 2fa4c19..502a9a5 100644 --- a/scenes/PerkCard.tscn +++ b/scenes/PerkCard.tscn @@ -1,68 +1,101 @@ -[gd_scene format=3 uid="uid://cgl06rqop270h"] +[gd_scene format=3 uid="uid://bbhpa50ef6702"] [ext_resource type="Script" uid="uid://dw5y2tp34fxys" path="res://scripts/perk_card.gd" id="1_t8gqh"] [ext_resource type="Texture2D" uid="uid://duo145bmwho8d" path="res://assets/UI assets pack 2/UI books & more.png" id="2_nlhlf"] [ext_resource type="FontFile" uid="uid://cq0jx2aapggkg" path="res://assets/fonts/slkscrb.ttf" id="3_n4umd"] [ext_resource type="FontFile" uid="uid://brooj0hba7650" path="res://assets/fonts/slkscr.ttf" id="4_40ty6"] +[ext_resource type="Texture2D" uid="uid://cdktimg5axaxj" path="res://assets/Fire Pixel Bullet 16x16/All_Fire_Bullet_Pixel_16x16_01.png" id="4_nlhlf"] [sub_resource type="AtlasTexture" id="AtlasTexture_fgk3h"] atlas = ExtResource("2_nlhlf") region = Rect2(561, 17, 46, 62) [sub_resource type="LabelSettings" id="LabelSettings_qag4p"] -line_spacing = 0.0 +line_spacing = 5.0 font = ExtResource("3_n4umd") -font_size = 5 +font_size = 12 + +[sub_resource type="AtlasTexture" id="AtlasTexture_n4umd"] +atlas = ExtResource("4_nlhlf") +region = Rect2(258, 241, 25, 14) [sub_resource type="LabelSettings" id="LabelSettings_ni87r"] font = ExtResource("4_40ty6") -font_size = 3 +font_size = 11 [node name="PerkCard" type="Control" unique_id=1471811151] +custom_minimum_size = Vector2(200, 300) layout_mode = 3 anchors_preset = 0 script = ExtResource("1_t8gqh") [node name="Card" type="TextureRect" parent="." unique_id=1832247473] texture_filter = 1 +custom_minimum_size = Vector2(200, 300) layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 texture = SubResource("AtlasTexture_fgk3h") -[node name="Description" type="Label" parent="Card" unique_id=2006873472] +[node name="Name" type="Label" parent="Card" unique_id=2006873472] layout_mode = 1 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = -20.5 -offset_top = 7.0 -offset_right = 20.5 -offset_bottom = 23.0 +offset_left = -50.5 +offset_top = 43.0 +offset_right = 50.5 +offset_bottom = 92.0 grow_horizontal = 2 -text = "AOE --Feuerball" +text = "Zweizeilige +Überschrift +" label_settings = SubResource("LabelSettings_qag4p") horizontal_alignment = 1 -[node name="Name" type="Label" parent="Card" unique_id=859816848] +[node name="TextureRect" type="TextureRect" parent="Card/Name" unique_id=2128840891] layout_mode = 1 anchors_preset = 7 anchor_left = 0.5 anchor_top = 1.0 anchor_right = 0.5 anchor_bottom = 1.0 -offset_left = -20.0 -offset_top = -36.0 -offset_right = 20.0 +offset_left = -24.5 +offset_top = -10.0 +offset_right = 24.5 +offset_bottom = 19.0 grow_horizontal = 2 grow_vertical = 0 -text = "Das ist ein test" +texture = SubResource("AtlasTexture_n4umd") + +[node name="Description" type="Label" parent="Card" unique_id=859816848] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -65.0 +offset_top = -176.0 +offset_right = 69.0 +offset_bottom = -43.0 +grow_horizontal = 2 +grow_vertical = 0 +text = "Text in Zeile Eins +Text in Zeile Eins +Text in Zeile Eins +Text in Zeile Eins +Text in Zeile Zwei +Text in Zeile Drei +Text in Zeile Vier +Text in Zeile Fünf" label_settings = SubResource("LabelSettings_ni87r") horizontal_alignment = 1 autowrap_mode = 2 [node name="Button" type="Button" parent="." unique_id=1274377333] layout_mode = 0 -offset_right = 46.0 -offset_bottom = 62.0 +offset_right = 200.0 +offset_bottom = 300.0 + +[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] diff --git a/scenes/game.tscn b/scenes/game.tscn index c446e16..c29d57c 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -2427,6 +2427,7 @@ grow_horizontal = 2 script = ExtResource("16_rysoc") [node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/LevelUpManager" unique_id=957625333] +custom_minimum_size = Vector2(1000, 400) layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -2439,6 +2440,7 @@ offset_right = 20.0 offset_bottom = 390.0 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/separation = 50 alignment = 1 [node name="PerkEffects" type="Node2D" parent="." unique_id=2027136639] diff --git a/scripts/Perk.gd b/scripts/Perk.gd index c32ff4a..d656bb3 100644 --- a/scripts/Perk.gd +++ b/scripts/Perk.gd @@ -3,4 +3,5 @@ class_name Perk @export var name: String @export var description: String +@export var icon: Texture2D = null var effect: Callable diff --git a/scripts/level_up_manager.gd b/scripts/level_up_manager.gd index f34f622..e18cb9b 100644 --- a/scripts/level_up_manager.gd +++ b/scripts/level_up_manager.gd @@ -3,6 +3,7 @@ extends Control @onready var perk_effects = get_node("/root/Game/PerkEffects") var perks +@onready var perkCard = preload("res://scenes/PerkCard.tscn") # Called when the node enters the scene tree for the first time. func _ready() -> void: perks = perk_effects.available_perks @@ -22,12 +23,10 @@ func show_perks(): shuffled.shuffle() var chosen = shuffled.slice(0, 3) for x in chosen: - var button = Button.new() - button.text = x.name + "\n" + x.description - button.custom_minimum_size = Vector2(200, 500) - button.size_flags_horizontal = Control.SIZE_SHRINK_CENTER - button.pressed.connect(func(): select_perk(x)) - $HBoxContainer.add_child(button) + var card = perkCard.instantiate() + $HBoxContainer.add_child(card) + card.setup(x, func(): select_perk(x)) + func select_perk(perk): perk.effect.call() diff --git a/scripts/perk_card.gd b/scripts/perk_card.gd index 509e895..15f9ed7 100644 --- a/scripts/perk_card.gd +++ b/scripts/perk_card.gd @@ -1,4 +1,40 @@ extends Control - @export var icon: Texture2D # Called when the node enters the scene tree for the first time. +var on_select: Callable + + + +func setup(perk: Perk, select: Callable): + $Button.modulate.a = 0 + $Card/Name.text = perk.name + $Card/Description.text = perk.description + if perk.icon != null: + $Card/Name/TextureRect.texture = perk.icon + animate_in() + on_select = select + $Button.pressed.connect(_on_button_pressed) + + + +func _on_button_pressed() -> void: + await animate_out() + on_select.call() + pass # Replace with function body. + +func animate_in(): + await get_tree().process_frame + var start_y = global_position.y + 500 + var end_y = global_position.y + global_position.y = start_y + var tween = create_tween() + tween.tween_property(self, "global_position:y", end_y, 0.3).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_QUAD) + +func animate_out(): + var start_y = global_position.y + var end_y = global_position.y - 500 + global_position.y = start_y + var tween = create_tween() + tween.tween_property(self, "global_position:y", end_y, 0.3).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD) + await tween.finished +