✨ Upgradable
This commit is contained in:
		@@ -51,7 +51,7 @@ skill_dash={
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
weapon_fire={
 | 
					weapon_fire={
 | 
				
			||||||
"deadzone": 0.5,
 | 
					"deadzone": 0.5,
 | 
				
			||||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":256,"position":Vector2(234, 24),"global_position":Vector2(242, 104),"factor":1.0,"button_index":9,"canceled":false,"pressed":true,"double_click":false,"script":null)
 | 
					"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null)
 | 
				
			||||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(185, 16),"global_position":Vector2(193, 96),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
 | 
					, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(185, 16),"global_position":Vector2(193, 96),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
[gd_scene load_steps=9 format=3 uid="uid://l4mybb2dw107"]
 | 
					[gd_scene load_steps=10 format=3 uid="uid://l4mybb2dw107"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cwkcf8h5rspoh" path="res://scenes/objects/player.tscn" id="1_nq1ke"]
 | 
					[ext_resource type="PackedScene" uid="uid://cwkcf8h5rspoh" path="res://scenes/objects/player.tscn" id="1_nq1ke"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cxlgt8h33u7os" path="res://scenes/objects/tower.tscn" id="2_betjv"]
 | 
					[ext_resource type="PackedScene" uid="uid://cxlgt8h33u7os" path="res://scenes/objects/tower.tscn" id="2_betjv"]
 | 
				
			||||||
@@ -7,6 +7,7 @@
 | 
				
			|||||||
[ext_resource type="PackedScene" uid="uid://2tqfm73cc4id" path="res://scenes/manager/statistics.tscn" id="5_qd3ww"]
 | 
					[ext_resource type="PackedScene" uid="uid://2tqfm73cc4id" path="res://scenes/manager/statistics.tscn" id="5_qd3ww"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cjam63kp5sg2o" path="res://scenes/ui/stats_overlay.tscn" id="5_rymed"]
 | 
					[ext_resource type="PackedScene" uid="uid://cjam63kp5sg2o" path="res://scenes/ui/stats_overlay.tscn" id="5_rymed"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://dy51uqtr2ng32" path="res://scenes/ui/finish_screen.tscn" id="6_b264x"]
 | 
					[ext_resource type="PackedScene" uid="uid://dy51uqtr2ng32" path="res://scenes/ui/finish_screen.tscn" id="6_b264x"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://5mt7abqkbpei" path="res://scenes/ui/reward_claim_screen.tscn" id="6_t43s0"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Curve2D" id="Curve2D_gwd20"]
 | 
					[sub_resource type="Curve2D" id="Curve2D_gwd20"]
 | 
				
			||||||
_data = {
 | 
					_data = {
 | 
				
			||||||
@@ -39,6 +40,11 @@ rotation = 1.5708
 | 
				
			|||||||
[node name="StatsOverlay" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("5_rymed")]
 | 
					[node name="StatsOverlay" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("5_rymed")]
 | 
				
			||||||
stats = NodePath("../Statistics")
 | 
					stats = NodePath("../Statistics")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RewardClaimScreen" parent="." node_paths=PackedStringArray("tower", "player") instance=ExtResource("6_t43s0")]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					tower = NodePath("../Tower")
 | 
				
			||||||
 | 
					player = NodePath("../Player")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="FinishScreen" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("6_b264x")]
 | 
					[node name="FinishScreen" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("6_b264x")]
 | 
				
			||||||
visible = false
 | 
					visible = false
 | 
				
			||||||
stats = NodePath("../Statistics")
 | 
					stats = NodePath("../Statistics")
 | 
				
			||||||
@@ -48,4 +54,5 @@ stats = NodePath("../Statistics")
 | 
				
			|||||||
[connection signal="enemy_defeat" from="EnemyFarm" to="Statistics" method="_on_enemy_defeated"]
 | 
					[connection signal="enemy_defeat" from="EnemyFarm" to="Statistics" method="_on_enemy_defeated"]
 | 
				
			||||||
[connection signal="tower_broken" from="Tower" to="FinishScreen" method="_show"]
 | 
					[connection signal="tower_broken" from="Tower" to="FinishScreen" method="_show"]
 | 
				
			||||||
[connection signal="wave_finished" from="Statistics" to="EnemyFarm" method="_on_wave_finished"]
 | 
					[connection signal="wave_finished" from="Statistics" to="EnemyFarm" method="_on_wave_finished"]
 | 
				
			||||||
 | 
					[connection signal="wave_finished" from="Statistics" to="RewardClaimScreen" method="_show"]
 | 
				
			||||||
[connection signal="wave_started" from="Statistics" to="EnemyFarm" method="_on_wave_started"]
 | 
					[connection signal="wave_started" from="Statistics" to="EnemyFarm" method="_on_wave_started"]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,12 @@
 | 
				
			|||||||
[gd_scene load_steps=3 format=3 uid="uid://dy51uqtr2ng32"]
 | 
					[gd_scene load_steps=4 format=3 uid="uid://dy51uqtr2ng32"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://scripts/ui/finish_screen.gd" id="1_c1emt"]
 | 
					[ext_resource type="Script" path="res://scripts/ui/finish_screen.gd" id="1_c1emt"]
 | 
				
			||||||
[ext_resource type="Theme" uid="uid://gh5a3no0ojkl" path="res://codingland.tres" id="1_l6ven"]
 | 
					[ext_resource type="Theme" uid="uid://gh5a3no0ojkl" path="res://codingland.tres" id="1_l6ven"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="FinishScreen" type="Control"]
 | 
					[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_djdno"]
 | 
				
			||||||
 | 
					bg_color = Color(0.301961, 0.301961, 0.301961, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="FinishScreen" type="Control" node_paths=PackedStringArray("survived_indicator", "wave_indicator", "enemies_indicator", "bullet_indicator")]
 | 
				
			||||||
layout_mode = 3
 | 
					layout_mode = 3
 | 
				
			||||||
anchors_preset = 15
 | 
					anchors_preset = 15
 | 
				
			||||||
anchor_right = 1.0
 | 
					anchor_right = 1.0
 | 
				
			||||||
@@ -12,17 +15,107 @@ grow_horizontal = 2
 | 
				
			|||||||
grow_vertical = 2
 | 
					grow_vertical = 2
 | 
				
			||||||
theme = ExtResource("1_l6ven")
 | 
					theme = ExtResource("1_l6ven")
 | 
				
			||||||
script = ExtResource("1_c1emt")
 | 
					script = ExtResource("1_c1emt")
 | 
				
			||||||
 | 
					survived_indicator = NodePath("Panel/SurvivedTime")
 | 
				
			||||||
 | 
					wave_indicator = NodePath("Panel/WaveCount")
 | 
				
			||||||
 | 
					enemies_indicator = NodePath("Panel/EnemyCount")
 | 
				
			||||||
 | 
					bullet_indicator = NodePath("Panel/BulletCount")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Panel" type="Panel" parent="."]
 | 
					[node name="Panel" type="Panel" parent="."]
 | 
				
			||||||
layout_mode = 0
 | 
					layout_mode = 0
 | 
				
			||||||
offset_right = 1152.0
 | 
					offset_right = 1152.0
 | 
				
			||||||
offset_bottom = 648.0
 | 
					offset_bottom = 648.0
 | 
				
			||||||
 | 
					theme_override_styles/panel = SubResource("StyleBoxFlat_djdno")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Title" type="Label" parent="Panel"]
 | 
					[node name="Title" type="Label" parent="Panel"]
 | 
				
			||||||
layout_mode = 0
 | 
					layout_mode = 0
 | 
				
			||||||
offset_top = 280.0
 | 
					offset_top = 128.0
 | 
				
			||||||
offset_right = 1152.0
 | 
					offset_right = 1152.0
 | 
				
			||||||
offset_bottom = 364.0
 | 
					offset_bottom = 212.0
 | 
				
			||||||
theme_override_font_sizes/font_size = 64
 | 
					theme_override_font_sizes/font_size = 64
 | 
				
			||||||
text = "Game Over"
 | 
					text = "You failed"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Subtitle" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 208.0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 250.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 28
 | 
				
			||||||
 | 
					text = "The tower has been destroyed"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="SurvivedCaption" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 416.0
 | 
				
			||||||
 | 
					offset_right = 576.0
 | 
				
			||||||
 | 
					offset_bottom = 448.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 24
 | 
				
			||||||
 | 
					text = "You Survived"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="SurvivedTime" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 440.0
 | 
				
			||||||
 | 
					offset_right = 576.0
 | 
				
			||||||
 | 
					offset_bottom = 504.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 48
 | 
				
			||||||
 | 
					text = "0.0s"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="WaveCaption" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 296.0
 | 
				
			||||||
 | 
					offset_right = 576.0
 | 
				
			||||||
 | 
					offset_bottom = 328.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 24
 | 
				
			||||||
 | 
					text = "Wave"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="WaveCount" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 324.0
 | 
				
			||||||
 | 
					offset_right = 576.0
 | 
				
			||||||
 | 
					offset_bottom = 388.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 48
 | 
				
			||||||
 | 
					text = "1"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="EnemyTitle" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 576.0
 | 
				
			||||||
 | 
					offset_top = 296.0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 328.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 24
 | 
				
			||||||
 | 
					text = "Enemy Defeated"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="EnemyCount" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 576.0
 | 
				
			||||||
 | 
					offset_top = 324.0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 388.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 48
 | 
				
			||||||
 | 
					text = "0"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="BulletTitle" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 576.0
 | 
				
			||||||
 | 
					offset_top = 416.0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 448.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 24
 | 
				
			||||||
 | 
					text = "Bullet Shoot"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="BulletCount" type="Label" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 576.0
 | 
				
			||||||
 | 
					offset_top = 440.0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 504.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 48
 | 
				
			||||||
 | 
					text = "0"
 | 
				
			||||||
horizontal_alignment = 1
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										34
									
								
								scenes/ui/reward_claim_screen.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								scenes/ui/reward_claim_screen.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=5 format=3 uid="uid://5mt7abqkbpei"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Theme" uid="uid://gh5a3no0ojkl" path="res://codingland.tres" id="1_yxvac"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scripts/ui/reward_claim_screen.gd" id="2_c2hn7"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://bayylbkjbagy5" path="res://scenes/ui/reward_item.tscn" id="3_p7bh8"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3xnq2"]
 | 
				
			||||||
 | 
					bg_color = Color(0.301961, 0.301961, 0.301961, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RewardClaimScreen" type="Control"]
 | 
				
			||||||
 | 
					process_mode = 3
 | 
				
			||||||
 | 
					layout_mode = 3
 | 
				
			||||||
 | 
					anchors_preset = 15
 | 
				
			||||||
 | 
					anchor_right = 1.0
 | 
				
			||||||
 | 
					anchor_bottom = 1.0
 | 
				
			||||||
 | 
					grow_horizontal = 2
 | 
				
			||||||
 | 
					grow_vertical = 2
 | 
				
			||||||
 | 
					theme = ExtResource("1_yxvac")
 | 
				
			||||||
 | 
					script = ExtResource("2_c2hn7")
 | 
				
			||||||
 | 
					card = ExtResource("3_p7bh8")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Panel" type="Panel" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_right = 1152.0
 | 
				
			||||||
 | 
					offset_bottom = 648.0
 | 
				
			||||||
 | 
					theme_override_styles/panel = SubResource("StyleBoxFlat_3xnq2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RewardContainer" type="HBoxContainer" parent="Panel"]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 32.0
 | 
				
			||||||
 | 
					offset_top = 32.0
 | 
				
			||||||
 | 
					offset_right = 1120.0
 | 
				
			||||||
 | 
					offset_bottom = 616.0
 | 
				
			||||||
 | 
					alignment = 1
 | 
				
			||||||
							
								
								
									
										43
									
								
								scenes/ui/reward_item.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								scenes/ui/reward_item.tscn
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					[gd_scene load_steps=2 format=3 uid="uid://bayylbkjbagy5"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://scripts/ui/reward_item.gd" id="1_v4j3k"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="RewardItem" type="Panel"]
 | 
				
			||||||
 | 
					custom_minimum_size = Vector2(360, 584)
 | 
				
			||||||
 | 
					script = ExtResource("1_v4j3k")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Title" type="Label" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 120.0
 | 
				
			||||||
 | 
					offset_right = 360.0
 | 
				
			||||||
 | 
					offset_bottom = 162.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 32
 | 
				
			||||||
 | 
					text = "Reward"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Subtitle" type="Label" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 160.0
 | 
				
			||||||
 | 
					offset_right = 360.0
 | 
				
			||||||
 | 
					offset_bottom = 184.0
 | 
				
			||||||
 | 
					theme_override_font_sizes/font_size = 16
 | 
				
			||||||
 | 
					text = "Reward description"
 | 
				
			||||||
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Description" type="RichTextLabel" parent="."]
 | 
				
			||||||
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_left = 52.0
 | 
				
			||||||
 | 
					offset_top = 208.0
 | 
				
			||||||
 | 
					offset_right = 308.0
 | 
				
			||||||
 | 
					offset_bottom = 504.0
 | 
				
			||||||
 | 
					bbcode_enabled = true
 | 
				
			||||||
 | 
					text = "This is the world most powerful reward. Trust me, choose this is a great choice."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="ClaimButton" type="Button" parent="."]
 | 
				
			||||||
 | 
					offset_left = 52.0
 | 
				
			||||||
 | 
					offset_top = 520.0
 | 
				
			||||||
 | 
					offset_right = 308.0
 | 
				
			||||||
 | 
					offset_bottom = 552.0
 | 
				
			||||||
 | 
					text = "Claim"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[connection signal="pressed" from="ClaimButton" to="." method="_on_claim"]
 | 
				
			||||||
@@ -30,17 +30,18 @@ offset_bottom = 648.0
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[node name="SurvivedCaption" type="Label" parent="SurvivedControl"]
 | 
					[node name="SurvivedCaption" type="Label" parent="SurvivedControl"]
 | 
				
			||||||
layout_mode = 0
 | 
					layout_mode = 0
 | 
				
			||||||
 | 
					offset_top = 5.0
 | 
				
			||||||
offset_right = 1152.0
 | 
					offset_right = 1152.0
 | 
				
			||||||
offset_bottom = 26.0
 | 
					offset_bottom = 31.0
 | 
				
			||||||
theme_override_font_sizes/font_size = 18
 | 
					theme_override_font_sizes/font_size = 18
 | 
				
			||||||
text = "You survived"
 | 
					text = "You survived"
 | 
				
			||||||
horizontal_alignment = 1
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="SurvivedTime" type="Label" parent="SurvivedControl"]
 | 
					[node name="SurvivedTime" type="Label" parent="SurvivedControl"]
 | 
				
			||||||
layout_mode = 0
 | 
					layout_mode = 0
 | 
				
			||||||
offset_top = 20.0
 | 
					offset_top = 25.0
 | 
				
			||||||
offset_right = 1152.0
 | 
					offset_right = 1152.0
 | 
				
			||||||
offset_bottom = 65.0
 | 
					offset_bottom = 70.0
 | 
				
			||||||
theme_override_font_sizes/font_size = 32
 | 
					theme_override_font_sizes/font_size = 32
 | 
				
			||||||
text = "0.0s"
 | 
					text = "0.0s"
 | 
				
			||||||
horizontal_alignment = 1
 | 
					horizontal_alignment = 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					class_name Tower
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extends Area2D
 | 
					extends Area2D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signal tower_broken
 | 
					signal tower_broken
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					class_name Player
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extends CharacterBody2D
 | 
					extends CharacterBody2D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@export var speed = 1200
 | 
					@export var speed = 1200
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,5 +2,14 @@ extends Control
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@export var stats: Statistics
 | 
					@export var stats: Statistics
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@export var survived_indicator: Label
 | 
				
			||||||
 | 
					@export var wave_indicator: Label
 | 
				
			||||||
 | 
					@export var enemies_indicator: Label
 | 
				
			||||||
 | 
					@export var bullet_indicator: Label
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func _show():
 | 
					func _show():
 | 
				
			||||||
 | 
						survived_indicator.text = "%.2fs" % (stats.get_time_survived() / 1000.0)
 | 
				
			||||||
 | 
						wave_indicator.text = "%d" % stats.get_current_wave()
 | 
				
			||||||
 | 
						enemies_indicator.text = "%d" % stats.enemies_defeated
 | 
				
			||||||
 | 
						bullet_indicator.text = "%d" % stats.bullet_shoot
 | 
				
			||||||
	visible = true
 | 
						visible = true
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										57
									
								
								scripts/ui/reward_claim_screen.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								scripts/ui/reward_claim_screen.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					extends Control
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@export var card: PackedScene
 | 
				
			||||||
 | 
					@export var tower: Tower
 | 
				
			||||||
 | 
					@export var player: Player
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@export var items = [
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							id = "QUICK_TRIGGER",
 | 
				
			||||||
 | 
							title = "Quick Trigger",
 | 
				
			||||||
 | 
							subtitle = "Save your finger",
 | 
				
			||||||
 | 
							description = "Reduce the delay between two shot.",
 | 
				
			||||||
 | 
							weight = 0.1,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func pick_item() -> Dictionary:
 | 
				
			||||||
 | 
						var total_weight: float = 0.0
 | 
				
			||||||
 | 
						for choice in items:
 | 
				
			||||||
 | 
							total_weight += choice["weight"]
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						var random_value: float = randf() * total_weight
 | 
				
			||||||
 | 
						var cumulative_weight: float = 0.0
 | 
				
			||||||
 | 
						for choice in items:
 | 
				
			||||||
 | 
							cumulative_weight += choice["weight"]
 | 
				
			||||||
 | 
							if random_value <= cumulative_weight:
 | 
				
			||||||
 | 
								return choice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return items.back()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func roll():
 | 
				
			||||||
 | 
						for child in $Panel/RewardContainer.get_children():
 | 
				
			||||||
 | 
							child.queue_free()
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						var items = []
 | 
				
			||||||
 | 
						for idx in range(3):
 | 
				
			||||||
 | 
							items.append(pick_item())
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						for item in items:
 | 
				
			||||||
 | 
							var instance = card.instantiate()
 | 
				
			||||||
 | 
							instance.tower = tower
 | 
				
			||||||
 | 
							instance.player = player
 | 
				
			||||||
 | 
							instance.id = item["id"]
 | 
				
			||||||
 | 
							instance.title = item["title"]
 | 
				
			||||||
 | 
							instance.subtitle = item["subtitle"]
 | 
				
			||||||
 | 
							instance.description = item["description"]
 | 
				
			||||||
 | 
							instance.connect("claimed", _hide)
 | 
				
			||||||
 | 
							$Panel/RewardContainer.add_child(instance)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _show():
 | 
				
			||||||
 | 
						roll()
 | 
				
			||||||
 | 
						get_tree().paused = true
 | 
				
			||||||
 | 
						visible = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _hide():
 | 
				
			||||||
 | 
						get_tree().paused = false
 | 
				
			||||||
 | 
						visible = false
 | 
				
			||||||
							
								
								
									
										22
									
								
								scripts/ui/reward_item.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								scripts/ui/reward_item.gd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					extends Panel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					signal claimed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@export var tower: Tower
 | 
				
			||||||
 | 
					@export var player: Player
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@export var id: String
 | 
				
			||||||
 | 
					@export var title: String
 | 
				
			||||||
 | 
					@export var subtitle: String
 | 
				
			||||||
 | 
					@export var description: String
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _ready():
 | 
				
			||||||
 | 
						$Title.text = title
 | 
				
			||||||
 | 
						$Subtitle.text = subtitle
 | 
				
			||||||
 | 
						$Description.text = description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _on_claim():
 | 
				
			||||||
 | 
						if id == "QUICK_TRIGGER":
 | 
				
			||||||
 | 
							if player.fire_cooldown_duration > 0:
 | 
				
			||||||
 | 
								player.fire_cooldown_duration -= 0.05
 | 
				
			||||||
 | 
						claimed.emit()
 | 
				
			||||||
		Reference in New Issue
	
	Block a user