Ebb and flow

This commit is contained in:
2024-02-16 23:35:39 +08:00
parent 7cc86d8546
commit cc562a4950
31 changed files with 330 additions and 65 deletions

View File

@@ -2,9 +2,10 @@
[ext_resource type="Script" path="res://scripts/enemy_farm.gd" id="1_66qev"]
[node name="EnemyFarm" type="Node2D" node_paths=PackedStringArray("common_parent")]
[node name="EnemyFarm" type="Node2D" node_paths=PackedStringArray("common_parent", "respawn_timer")]
script = ExtResource("1_66qev")
common_parent = NodePath(".")
respawn_timer = NodePath("RespawnTimer")
[node name="RespawnTimer" type="Timer" parent="."]
autostart = true

View File

@@ -1,9 +1,12 @@
[gd_scene load_steps=6 format=3 uid="uid://l4mybb2dw107"]
[gd_scene load_steps=9 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://cxlgt8h33u7os" path="res://scenes/objects/tower.tscn" id="2_betjv"]
[ext_resource type="PackedScene" uid="uid://cppmks4ln28yd" path="res://scenes/objects/attacker.tscn" id="3_jg22m"]
[ext_resource type="PackedScene" uid="uid://cy2xpilh8v7vx" path="res://scenes/farms/enemy_farm.tscn" id="3_ogjsq"]
[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://dy51uqtr2ng32" path="res://scenes/ui/finish_screen.tscn" id="6_b264x"]
[sub_resource type="Curve2D" id="Curve2D_gwd20"]
_data = {
@@ -20,8 +23,9 @@ common_target = NodePath("../Player")
[node name="BulletFarm" type="Node2D" parent="."]
[node name="Player" parent="." node_paths=PackedStringArray("weapon_bullet_parent") instance=ExtResource("1_nq1ke")]
[node name="Player" parent="." node_paths=PackedStringArray("weapon_bullet_parent", "statistics") instance=ExtResource("1_nq1ke")]
weapon_bullet_parent = NodePath("../BulletFarm")
statistics = NodePath("../Statistics")
[node name="Tower" parent="." instance=ExtResource("2_betjv")]
@@ -31,3 +35,17 @@ curve = SubResource("Curve2D_gwd20")
[node name="EnemySpawnPoint" type="PathFollow2D" parent="EnemySpawnPath"]
position = Vector2(-309, -271)
rotation = 1.5708
[node name="StatsOverlay" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("5_rymed")]
stats = NodePath("../Statistics")
[node name="FinishScreen" parent="." node_paths=PackedStringArray("stats") instance=ExtResource("6_b264x")]
visible = false
stats = NodePath("../Statistics")
[node name="Statistics" parent="." instance=ExtResource("5_qd3ww")]
[connection signal="enemy_defeat" from="EnemyFarm" to="Statistics" method="_on_enemy_defeated"]
[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_started" from="Statistics" to="EnemyFarm" method="_on_wave_started"]

View File

@@ -0,0 +1,18 @@
[gd_scene load_steps=2 format=3 uid="uid://2tqfm73cc4id"]
[ext_resource type="Script" path="res://scripts/statistics.gd" id="1_4fj6w"]
[node name="Statistics" type="Node" node_paths=PackedStringArray("wave_timer", "wave_gap_timer")]
script = ExtResource("1_4fj6w")
wave_timer = NodePath("WaveTimer")
wave_gap_timer = NodePath("WaveGapTimer")
[node name="WaveTimer" type="Timer" parent="."]
wait_time = 10.0
one_shot = true
[node name="WaveGapTimer" type="Timer" parent="."]
one_shot = true
[connection signal="timeout" from="WaveTimer" to="." method="_on_wave_passed"]
[connection signal="timeout" from="WaveGapTimer" to="." method="_on_wave_gap_passed"]

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://cppmks4ln28yd"]
[ext_resource type="Texture2D" uid="uid://p3urintydjlo" path="res://assets/attacker.svg" id="1_56wxx"]
[ext_resource type="Texture2D" uid="uid://p3urintydjlo" path="res://assets/images/attacker.svg" id="1_56wxx"]
[ext_resource type="Script" path="res://scripts/attacker.gd" id="1_d7hg4"]
[node name="Attacker" type="CharacterBody2D"]

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://h4fxpxqc6bpt"]
[ext_resource type="Script" path="res://scripts/bullet.gd" id="1_7ic61"]
[ext_resource type="Texture2D" uid="uid://voltvmrkr73s" path="res://assets/bullet.svg" id="1_tytsj"]
[ext_resource type="Texture2D" uid="uid://voltvmrkr73s" path="res://assets/images/bullet.svg" id="1_tytsj"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_r7dy5"]
size = Vector2(8, 24)
@@ -22,6 +22,7 @@ rotation = 1.5708
shape = SubResource("RectangleShape2D_r7dy5")
[node name="DisposeTimer" type="Timer" parent="."]
one_shot = true
autostart = true
[connection signal="timeout" from="DisposeTimer" to="." method="_on_timed_out"]

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://cwkcf8h5rspoh"]
[ext_resource type="Script" path="res://scripts/player.gd" id="1_sa7t7"]
[ext_resource type="Texture2D" uid="uid://b4daomndc1ag" path="res://assets/player.svg" id="2_3pad2"]
[ext_resource type="Texture2D" uid="uid://b4daomndc1ag" path="res://assets/images/player.svg" id="2_3pad2"]
[ext_resource type="PackedScene" uid="uid://h4fxpxqc6bpt" path="res://scenes/objects/bullet.tscn" id="2_v83ov"]
[sub_resource type="CircleShape2D" id="CircleShape2D_k56cq"]

View File

@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://cxlgt8h33u7os"]
[ext_resource type="Script" path="res://scripts/tower.gd" id="1_d5o8q"]
[ext_resource type="Texture2D" uid="uid://jxub8lma4oud" path="res://assets/tower_background.svg" id="2_ynj1l"]
[ext_resource type="Texture2D" uid="uid://jxub8lma4oud" path="res://assets/images/tower.svg" id="2_ynj1l"]
[ext_resource type="Script" path="res://scripts/tower_health_display.gd" id="3_ijb8h"]
[sub_resource type="CircleShape2D" id="CircleShape2D_7mogk"]

View File

@@ -0,0 +1,28 @@
[gd_scene load_steps=3 format=3 uid="uid://dy51uqtr2ng32"]
[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"]
[node name="FinishScreen" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_l6ven")
script = ExtResource("1_c1emt")
[node name="Panel" type="Panel" parent="."]
layout_mode = 0
offset_right = 1152.0
offset_bottom = 648.0
[node name="Title" type="Label" parent="Panel"]
layout_mode = 0
offset_top = 280.0
offset_right = 1152.0
offset_bottom = 364.0
theme_override_font_sizes/font_size = 64
text = "Game Over"
horizontal_alignment = 1

View File

@@ -0,0 +1,78 @@
[gd_scene load_steps=5 format=3 uid="uid://cjam63kp5sg2o"]
[ext_resource type="Script" path="res://scripts/ui/stats_overlay.gd" id="1_iejg3"]
[ext_resource type="Theme" uid="uid://gh5a3no0ojkl" path="res://codingland.tres" id="1_ne3m3"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bs475"]
bg_color = Color(0.996078, 0.996078, 0.996078, 0.588235)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rfnxc"]
bg_color = Color(0.517647, 0.729412, 0.478431, 1)
[node name="StatsOverlay" type="Control" node_paths=PackedStringArray("survived_indicator", "wave_indicator", "wave_progress")]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_ne3m3")
script = ExtResource("1_iejg3")
survived_indicator = NodePath("SurvivedControl/SurvivedTime")
wave_indicator = NodePath("WaveControl/WaveCount")
wave_progress = NodePath("WaveControl/WaveProgress")
[node name="SurvivedControl" type="Control" parent="."]
anchors_preset = 0
offset_top = 570.0
offset_right = 1152.0
offset_bottom = 648.0
[node name="SurvivedCaption" type="Label" parent="SurvivedControl"]
layout_mode = 0
offset_right = 1152.0
offset_bottom = 26.0
theme_override_font_sizes/font_size = 18
text = "You survived"
horizontal_alignment = 1
[node name="SurvivedTime" type="Label" parent="SurvivedControl"]
layout_mode = 0
offset_top = 20.0
offset_right = 1152.0
offset_bottom = 65.0
theme_override_font_sizes/font_size = 32
text = "0.0s"
horizontal_alignment = 1
[node name="WaveControl" type="Control" parent="."]
anchors_preset = 0
offset_right = 1152.0
offset_bottom = 648.0
[node name="WaveCaption" type="Label" parent="WaveControl"]
layout_mode = 0
offset_top = 14.0
offset_right = 1152.0
offset_bottom = 40.0
theme_override_font_sizes/font_size = 18
text = "Wave"
horizontal_alignment = 1
[node name="WaveCount" type="Label" parent="WaveControl"]
layout_mode = 0
offset_top = 34.0
offset_right = 1152.0
offset_bottom = 79.0
theme_override_font_sizes/font_size = 32
text = "1"
horizontal_alignment = 1
[node name="WaveProgress" type="ProgressBar" parent="WaveControl"]
custom_minimum_size = Vector2(2.08165e-12, 10)
layout_mode = 0
offset_right = 1152.0
offset_bottom = 8.0
theme_override_styles/background = SubResource("StyleBoxFlat_bs475")
theme_override_styles/fill = SubResource("StyleBoxFlat_rfnxc")
show_percentage = false