diff --git a/.gitignore b/.gitignore
index c862b88..2ed0efd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,13 @@
# Godot 4+ specific ignores
-Project/.godot/
-Project/android/
+demo/.godot/
+demo/android/
+demo/**/*.import
+
+# Template ignores
+demo/export_presets.cfg
+
+# Other bullshit
+.sconsign.dblite
+*.o
+*.a
+*.os
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..35ec1da
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "godot-cpp"]
+ path = godot-cpp
+ url = https://github.com/godotengine/godot-cpp.git
+ branch = master
diff --git a/Project/Scenes/Bullets/bullet.tscn b/Project/Scenes/Bullets/bullet.tscn
deleted file mode 100644
index d417e4f..0000000
--- a/Project/Scenes/Bullets/bullet.tscn
+++ /dev/null
@@ -1,31 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://do4a4d3u60iy1"]
-
-[ext_resource type="Script" path="res://Scripts/bullet.gd" id="1_utvym"]
-[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://Textures/Bullet.png" id="2_xbn07"]
-[ext_resource type="AudioStream" uid="uid://b4r0manp60hb4" path="res://Sound/HitHurt.ogg" id="3_qwtek"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_ad2gx"]
-radius = 14.0
-
-[node name="Bullet" type="RigidBody2D" groups=["Bullet"]]
-collision_layer = 2
-collision_mask = 2
-gravity_scale = 0.0
-lock_rotation = true
-contact_monitor = true
-max_contacts_reported = 1
-script = ExtResource("1_utvym")
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_ad2gx")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-position = Vector2(1.42109e-14, 1)
-scale = Vector2(0.034, 0.034)
-texture = ExtResource("2_xbn07")
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
-stream = ExtResource("3_qwtek")
-volume_db = -5.0
-
-[connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/Project/Scenes/Bullets/enemy_bullet.tscn b/Project/Scenes/Bullets/enemy_bullet.tscn
deleted file mode 100644
index 7ba4325..0000000
--- a/Project/Scenes/Bullets/enemy_bullet.tscn
+++ /dev/null
@@ -1,31 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://dq1pnq3g34tay"]
-
-[ext_resource type="Script" path="res://Scripts/bullet.gd" id="1_axiew"]
-[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://Textures/Bullet.png" id="2_c87oi"]
-[ext_resource type="AudioStream" uid="uid://b4r0manp60hb4" path="res://Sound/HitHurt.ogg" id="3_g6cj5"]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_ad2gx"]
-radius = 14.0
-
-[node name="EnemyBullet" type="RigidBody2D" groups=["Bullet"]]
-modulate = Color(1, 0, 0, 1)
-gravity_scale = 0.0
-lock_rotation = true
-contact_monitor = true
-max_contacts_reported = 1
-script = ExtResource("1_axiew")
-EnemyBullet = true
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_ad2gx")
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-position = Vector2(1.42109e-14, 1)
-scale = Vector2(0.034, 0.034)
-texture = ExtResource("2_c87oi")
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
-stream = ExtResource("3_g6cj5")
-volume_db = -5.0
-
-[connection signal="body_entered" from="." to="." method="_on_body_entered"]
diff --git a/Project/Scenes/Enemies/enemy.tscn b/Project/Scenes/Enemies/enemy.tscn
deleted file mode 100644
index 8216baf..0000000
--- a/Project/Scenes/Enemies/enemy.tscn
+++ /dev/null
@@ -1,85 +0,0 @@
-[gd_scene load_steps=15 format=3 uid="uid://8l43dsk30uq3"]
-
-[ext_resource type="Script" path="res://Scripts/enemy.gd" id="1_4aawx"]
-[ext_resource type="Texture2D" uid="uid://blrbc8mp71nub" path="res://Textures/Route/Route 1.png" id="2_h84n4"]
-[ext_resource type="Texture2D" uid="uid://cphw4low4de4b" path="res://Textures/Route/Route 2.png" id="3_tnxi1"]
-[ext_resource type="Texture2D" uid="uid://dwdn12rkkr1uo" path="res://Textures/Route/Route 3.png" id="4_8tegk"]
-[ext_resource type="Texture2D" uid="uid://bbupn4br1fog7" path="res://Textures/Route/Route 4.png" id="5_nodwr"]
-[ext_resource type="Texture2D" uid="uid://tfbp816emics" path="res://Textures/Route/Route 5.png" id="6_dky81"]
-[ext_resource type="Texture2D" uid="uid://cl0sil1psnxs1" path="res://Textures/Route/Route 6.png" id="7_lif88"]
-[ext_resource type="Texture2D" uid="uid://cgv78fuua01eg" path="res://Textures/Route/Route 7.png" id="8_slcma"]
-[ext_resource type="Texture2D" uid="uid://y2e4mmb2u3h5" path="res://Textures/Route/Route 8.png" id="9_g78pb"]
-[ext_resource type="Texture2D" uid="uid://cfonr11og4um" path="res://Textures/Route/Route 9.png" id="10_i4jqp"]
-[ext_resource type="Texture2D" uid="uid://dtgyeeu1t0n7h" path="res://Textures/Route/Route 10.png" id="11_skrsr"]
-[ext_resource type="Texture2D" uid="uid://b1xcgdrf6sdbp" path="res://Textures/Route/Route 11.png" id="12_gr3uw"]
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_48384"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("2_h84n4")
-}, {
-"duration": 1.0,
-"texture": ExtResource("3_tnxi1")
-}, {
-"duration": 1.0,
-"texture": ExtResource("4_8tegk")
-}, {
-"duration": 1.0,
-"texture": ExtResource("5_nodwr")
-}, {
-"duration": 1.0,
-"texture": ExtResource("6_dky81")
-}, {
-"duration": 1.0,
-"texture": ExtResource("7_lif88")
-}, {
-"duration": 1.0,
-"texture": ExtResource("8_slcma")
-}, {
-"duration": 1.0,
-"texture": ExtResource("9_g78pb")
-}, {
-"duration": 1.0,
-"texture": ExtResource("10_i4jqp")
-}, {
-"duration": 1.0,
-"texture": ExtResource("11_skrsr")
-}, {
-"duration": 1.0,
-"texture": ExtResource("12_gr3uw")
-}],
-"loop": true,
-"name": &"default",
-"speed": 22.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_t28hd"]
-size = Vector2(77, 77)
-
-[node name="Enemy" type="RigidBody2D" groups=["Enemy"]]
-collision_layer = 3
-collision_mask = 3
-mass = 50.0
-gravity_scale = 0.0
-lock_rotation = true
-custom_integrator = true
-contact_monitor = true
-max_contacts_reported = 1
-script = ExtResource("1_4aawx")
-
-[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
-position = Vector2(-9, 4)
-scale = Vector2(0.08, 0.08)
-sprite_frames = SubResource("SpriteFrames_48384")
-autoplay = "default"
-frame_progress = 0.329504
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2(0.5, 0.5)
-shape = SubResource("RectangleShape2D_t28hd")
-
-[node name="Arm" type="Node2D" parent="."]
-
-[node name="Marker2D" type="Marker2D" parent="Arm"]
-position = Vector2(-130, 0)
diff --git a/Project/Scenes/Enemies/shooting_enemy.tscn b/Project/Scenes/Enemies/shooting_enemy.tscn
deleted file mode 100644
index 9cd9092..0000000
--- a/Project/Scenes/Enemies/shooting_enemy.tscn
+++ /dev/null
@@ -1,83 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://bki7jjuvugscj"]
-
-[ext_resource type="Script" path="res://Scripts/enemy.gd" id="1_oyq4s"]
-[ext_resource type="PackedScene" uid="uid://dq1pnq3g34tay" path="res://Scenes/Bullets/enemy_bullet.tscn" id="2_w428l"]
-[ext_resource type="Texture2D" uid="uid://b2res51c25avx" path="res://Textures/Whale/Whale 1.png" id="3_rlx0w"]
-[ext_resource type="Texture2D" uid="uid://s3ici4urgkpp" path="res://Textures/Whale/Whale 2.png" id="4_nq1if"]
-[ext_resource type="Texture2D" uid="uid://xvmxbxost161" path="res://Textures/Whale/Whale 3.png" id="5_vayue"]
-[ext_resource type="Texture2D" uid="uid://d13ht078u72ob" path="res://Textures/Whale/Whale 4.png" id="6_5ajax"]
-[ext_resource type="Texture2D" uid="uid://dmdonnxkc6q5y" path="res://Textures/Whale/Whale 5.png" id="7_jutdb"]
-[ext_resource type="Texture2D" uid="uid://mk3erlmynh73" path="res://Textures/Whale/Whale 6.png" id="8_xrq6q"]
-[ext_resource type="Texture2D" uid="uid://dqlcy084umvmy" path="res://Textures/Whale/Whale 7.png" id="9_u1p5y"]
-[ext_resource type="Texture2D" uid="uid://bkiv5st0na5lf" path="res://Textures/Whale/Whale 8.png" id="10_fdwi5"]
-[ext_resource type="Texture2D" uid="uid://csmh12c3ird1w" path="res://Textures/Whale/Whale 9.png" id="11_7viix"]
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_t7ivn"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3_rlx0w")
-}, {
-"duration": 1.0,
-"texture": ExtResource("4_nq1if")
-}, {
-"duration": 1.0,
-"texture": ExtResource("5_vayue")
-}, {
-"duration": 1.0,
-"texture": ExtResource("6_5ajax")
-}, {
-"duration": 1.0,
-"texture": ExtResource("7_jutdb")
-}, {
-"duration": 1.0,
-"texture": ExtResource("8_xrq6q")
-}, {
-"duration": 1.0,
-"texture": ExtResource("9_u1p5y")
-}, {
-"duration": 1.0,
-"texture": ExtResource("10_fdwi5")
-}, {
-"duration": 1.0,
-"texture": ExtResource("11_7viix")
-}],
-"loop": true,
-"name": &"default",
-"speed": 10.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_pdpqn"]
-size = Vector2(201, 117)
-
-[node name="ShootingEnemy" type="RigidBody2D" groups=["Enemy"]]
-collision_layer = 3
-collision_mask = 3
-mass = 250.0
-gravity_scale = 0.0
-lock_rotation = true
-contact_monitor = true
-max_contacts_reported = 1
-script = ExtResource("1_oyq4s")
-Speed = 100
-Health = 11
-ScoreAmount = 500
-IsShooting = true
-Bullet = ExtResource("2_w428l")
-
-[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
-position = Vector2(2, 0)
-scale = Vector2(0.15, 0.15)
-sprite_frames = SubResource("SpriteFrames_t7ivn")
-autoplay = "default"
-frame_progress = 0.422597
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-position = Vector2(23.5, -0.5)
-shape = SubResource("RectangleShape2D_pdpqn")
-
-[node name="Arm" type="Node2D" parent="."]
-position = Vector2(23, 0)
-
-[node name="Marker2D" type="Marker2D" parent="Arm"]
-position = Vector2(-130, 0)
diff --git a/Project/Scenes/Enemies/small_enemy.tscn b/Project/Scenes/Enemies/small_enemy.tscn
deleted file mode 100644
index 9761115..0000000
--- a/Project/Scenes/Enemies/small_enemy.tscn
+++ /dev/null
@@ -1,101 +0,0 @@
-[gd_scene load_steps=19 format=3 uid="uid://cvg4akmwt77sx"]
-
-[ext_resource type="Script" path="res://Scripts/enemy.gd" id="1_kdxi1"]
-[ext_resource type="Texture2D" uid="uid://dw3bcaslqj467" path="res://Textures/Coin/Coin 1.png" id="2_s8unv"]
-[ext_resource type="Texture2D" uid="uid://cnpg71q8pydtg" path="res://Textures/Coin/Coin 2.png" id="3_mlxhs"]
-[ext_resource type="Texture2D" uid="uid://c0kygvqnsfse5" path="res://Textures/Coin/Coin 3.png" id="4_lo4ud"]
-[ext_resource type="Texture2D" uid="uid://c21ggslv66qpg" path="res://Textures/Coin/Coin 4.png" id="5_g16sj"]
-[ext_resource type="Texture2D" uid="uid://dn2vx0de2c724" path="res://Textures/Coin/Coin 5.png" id="6_06yps"]
-[ext_resource type="Texture2D" uid="uid://cro4ea1qh3kj8" path="res://Textures/Coin/Coin 6.png" id="7_3470u"]
-[ext_resource type="Texture2D" uid="uid://bb8bpnqbtgd0x" path="res://Textures/Coin/Coin 7.png" id="8_1q3om"]
-[ext_resource type="Texture2D" uid="uid://d0lqxih7m0e5w" path="res://Textures/Coin/Coin 8.png" id="9_8niih"]
-[ext_resource type="Texture2D" uid="uid://c8w32asukhshm" path="res://Textures/Coin/Coin 9.png" id="10_urhte"]
-[ext_resource type="Texture2D" uid="uid://cjsoadwiu0248" path="res://Textures/Coin/Coin 10.png" id="11_kmbik"]
-[ext_resource type="Texture2D" uid="uid://l2jd4lf4x4ip" path="res://Textures/Coin/Coin 11.png" id="12_lxhk4"]
-[ext_resource type="Texture2D" uid="uid://damvch2xehg0m" path="res://Textures/Coin/Coin 12.png" id="13_cymrp"]
-[ext_resource type="Texture2D" uid="uid://ctmtjvr8jqpq" path="res://Textures/Coin/Coin 13.png" id="14_oeilk"]
-[ext_resource type="Texture2D" uid="uid://vm6wphb3xf2s" path="res://Textures/Coin/Coin 14.png" id="15_8wghn"]
-[ext_resource type="Texture2D" uid="uid://ct2oc7jj6u6n3" path="res://Textures/Coin/Coin 15.png" id="16_52kjy"]
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_bx8oo"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("2_s8unv")
-}, {
-"duration": 1.0,
-"texture": ExtResource("3_mlxhs")
-}, {
-"duration": 1.0,
-"texture": ExtResource("4_lo4ud")
-}, {
-"duration": 1.0,
-"texture": ExtResource("5_g16sj")
-}, {
-"duration": 1.0,
-"texture": ExtResource("6_06yps")
-}, {
-"duration": 1.0,
-"texture": ExtResource("7_3470u")
-}, {
-"duration": 1.0,
-"texture": ExtResource("8_1q3om")
-}, {
-"duration": 1.0,
-"texture": ExtResource("9_8niih")
-}, {
-"duration": 1.0,
-"texture": ExtResource("10_urhte")
-}, {
-"duration": 1.0,
-"texture": ExtResource("11_kmbik")
-}, {
-"duration": 1.0,
-"texture": ExtResource("12_lxhk4")
-}, {
-"duration": 1.0,
-"texture": ExtResource("13_cymrp")
-}, {
-"duration": 1.0,
-"texture": ExtResource("14_oeilk")
-}, {
-"duration": 1.0,
-"texture": ExtResource("15_8wghn")
-}, {
-"duration": 1.0,
-"texture": ExtResource("16_52kjy")
-}],
-"loop": true,
-"name": &"default",
-"speed": 7.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_rhob5"]
-size = Vector2(28, 28)
-
-[node name="SmallEnemy" type="RigidBody2D" groups=["Enemy"]]
-collision_layer = 3
-collision_mask = 3
-mass = 10.0
-gravity_scale = 0.0
-lock_rotation = true
-contact_monitor = true
-max_contacts_reported = 1
-script = ExtResource("1_kdxi1")
-Speed = 500
-Health = 3
-ScoreAmount = 100
-
-[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
-scale = Vector2(0.03, 0.03)
-sprite_frames = SubResource("SpriteFrames_bx8oo")
-autoplay = "default"
-frame_progress = 0.44266
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_rhob5")
-
-[node name="Arm" type="Node2D" parent="."]
-
-[node name="Marker2D" type="Marker2D" parent="Arm"]
-position = Vector2(-130, 0)
diff --git a/Project/Scenes/Waves/Level 01/sample.tscn b/Project/Scenes/Waves/Level 01/sample.tscn
deleted file mode 100644
index 081dc48..0000000
--- a/Project/Scenes/Waves/Level 01/sample.tscn
+++ /dev/null
@@ -1,33 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://bkm7p6iqiqm21"]
-
-[ext_resource type="PackedScene" uid="uid://8l43dsk30uq3" path="res://Scenes/Enemies/enemy.tscn" id="1_qilfm"]
-
-[node name="SampleNoAnim" type="Node2D"]
-
-[node name="Enemy" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1358, 350)
-Speed = 400
-
-[node name="Enemy2" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1394, 242)
-Speed = 400
-
-[node name="Enemy3" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1388, 441)
-Speed = 400
-
-[node name="Enemy4" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1425, 533)
-Speed = 200
-
-[node name="Enemy5" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1460, 625)
-Speed = 200
-
-[node name="Enemy6" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1436, 148)
-Speed = 200
-
-[node name="Enemy7" parent="." instance=ExtResource("1_qilfm")]
-position = Vector2(1480, 56)
-Speed = 200
diff --git a/Project/Scenes/Waves/Level 01/sample_behind.tscn b/Project/Scenes/Waves/Level 01/sample_behind.tscn
deleted file mode 100644
index eba9a29..0000000
--- a/Project/Scenes/Waves/Level 01/sample_behind.tscn
+++ /dev/null
@@ -1,18 +0,0 @@
-[gd_scene load_steps=3 format=3 uid="uid://dyqnmrhflct7u"]
-
-[ext_resource type="PackedScene" uid="uid://8l43dsk30uq3" path="res://Scenes/Enemies/enemy.tscn" id="1_f6jx0"]
-[ext_resource type="PackedScene" uid="uid://bki7jjuvugscj" path="res://Scenes/Enemies/shooting_enemy.tscn" id="2_fnekj"]
-
-[node name="SampleBehind" type="Node2D"]
-
-[node name="Enemy" parent="." instance=ExtResource("1_f6jx0")]
-position = Vector2(-74, 175)
-Direction = Vector2(1, 0)
-
-[node name="Enemy2" parent="." instance=ExtResource("1_f6jx0")]
-position = Vector2(-79, 266)
-Direction = Vector2(1, 0)
-
-[node name="ShootingEnemy" parent="." instance=ExtResource("2_fnekj")]
-position = Vector2(-173, 589)
-Direction = Vector2(1, 0)
diff --git a/Project/Scenes/Waves/Level 01/sample_shooting.tscn b/Project/Scenes/Waves/Level 01/sample_shooting.tscn
deleted file mode 100644
index 7585026..0000000
--- a/Project/Scenes/Waves/Level 01/sample_shooting.tscn
+++ /dev/null
@@ -1,15 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://baqm758lyy4o3"]
-
-[ext_resource type="PackedScene" uid="uid://bki7jjuvugscj" path="res://Scenes/Enemies/shooting_enemy.tscn" id="1_5prw6"]
-
-[node name="SampleNoAnimShooting" type="Node2D"]
-
-[node name="ShootingEnemy" parent="." instance=ExtResource("1_5prw6")]
-position = Vector2(1394, 83)
-
-[node name="ShootingEnemy2" parent="." instance=ExtResource("1_5prw6")]
-position = Vector2(1391, 212)
-
-[node name="ShootingEnemy3" parent="." instance=ExtResource("1_5prw6")]
-position = Vector2(1386, 342)
-BulletDirection = 90.0
diff --git a/Project/Scenes/Waves/begin.tscn b/Project/Scenes/Waves/begin.tscn
deleted file mode 100644
index da4bd8f..0000000
--- a/Project/Scenes/Waves/begin.tscn
+++ /dev/null
@@ -1,53 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://b8vxsep2lvw3a"]
-
-[ext_resource type="Script" path="res://Scripts/beginning&end.gd" id="1_r5omd"]
-
-[sub_resource type="Animation" id="Animation_hbbht"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("ColorRect:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(0, 0, 0, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_xpd8i"]
-resource_name = "anim"
-length = 3.0
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("ColorRect:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 3),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(0, 0, 0, 1), Color(0, 0, 0, 0)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_gul8r"]
-_data = {
-"RESET": SubResource("Animation_hbbht"),
-"anim": SubResource("Animation_xpd8i")
-}
-
-[node name="Begin" type="Node2D"]
-script = ExtResource("1_r5omd")
-
-[node name="ColorRect" type="ColorRect" parent="."]
-offset_right = 1280.0
-offset_bottom = 720.0
-color = Color(0, 0, 0, 1)
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_gul8r")
-}
diff --git a/Project/Scenes/Waves/end.tscn b/Project/Scenes/Waves/end.tscn
deleted file mode 100644
index 8e23f5f..0000000
--- a/Project/Scenes/Waves/end.tscn
+++ /dev/null
@@ -1,67 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://bd0ehge1veq56"]
-
-[ext_resource type="Script" path="res://Scripts/beginning&end.gd" id="1_neulq"]
-
-[sub_resource type="Animation" id="Animation_wxjil"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("ColorRect:color")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(0, 0, 0, 0)]
-}
-
-[sub_resource type="Animation" id="Animation_l8o88"]
-resource_name = "end"
-length = 3.0
-tracks/0/type = "method"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(2.99),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"NextLevel"
-}]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("ColorRect:color")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0, 3),
-"transitions": PackedFloat32Array(1, 1),
-"update": 0,
-"values": [Color(0, 0, 0, 0), Color(0, 0, 0, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_q6a5y"]
-_data = {
-"RESET": SubResource("Animation_wxjil"),
-"anim": SubResource("Animation_l8o88")
-}
-
-[node name="End" type="Node2D"]
-script = ExtResource("1_neulq")
-
-[node name="ColorRect" type="ColorRect" parent="."]
-offset_right = 1280.0
-offset_bottom = 720.0
-color = Color(0, 0, 0, 0)
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_q6a5y")
-}
diff --git a/Project/Scenes/enemy_waves.tscn b/Project/Scenes/enemy_waves.tscn
deleted file mode 100644
index faa2842..0000000
--- a/Project/Scenes/enemy_waves.tscn
+++ /dev/null
@@ -1,6 +0,0 @@
-[gd_scene load_steps=2 format=3 uid="uid://dguvnd4wmo35j"]
-
-[ext_resource type="Script" path="res://Scripts/enemy_waves.gd" id="1_nghhd"]
-
-[node name="EnemyWaves" type="Node2D"]
-script = ExtResource("1_nghhd")
diff --git a/Project/Scenes/player.tscn b/Project/Scenes/player.tscn
deleted file mode 100644
index 97a0d99..0000000
--- a/Project/Scenes/player.tscn
+++ /dev/null
@@ -1,248 +0,0 @@
-[gd_scene load_steps=14 format=3 uid="uid://bjbccem28ir8r"]
-
-[ext_resource type="Script" path="res://Scripts/player.gd" id="1_2bkpj"]
-[ext_resource type="PackedScene" uid="uid://do4a4d3u60iy1" path="res://Scenes/Bullets/bullet.tscn" id="2_ogm6h"]
-[ext_resource type="Texture2D" uid="uid://c5kt81t5h4vgn" path="res://Textures/Plane/Plane.png" id="3_5g2vf"]
-[ext_resource type="AudioStream" uid="uid://dg1f8fv4a2jdm" path="res://Sound/Explosion.ogg" id="3_apj4i"]
-[ext_resource type="Texture2D" uid="uid://bcbjh2amre7ke" path="res://Textures/Plane/PlaneUp.png" id="3_t0dqt"]
-[ext_resource type="AudioStream" uid="uid://do4a5aj5a0216" path="res://Sound/Shoot.ogg" id="4_m3gyy"]
-[ext_resource type="Texture2D" uid="uid://bff4pkabs2ecf" path="res://Textures/Plane/PlaneDown.png" id="5_ylcev"]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_u1ywu"]
-size = Vector2(220, 68)
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_xtmdc"]
-particle_flag_disable_z = true
-emission_shape = 3
-emission_box_extents = Vector3(0, 12, 1)
-direction = Vector3(-1, 0, 0)
-spread = 0.0
-initial_velocity_min = 650.0
-initial_velocity_max = 650.0
-gravity = Vector3(0, 0, 0)
-scale_max = 8.0
-color = Color(0.513233, 0.513233, 0.513233, 1)
-
-[sub_resource type="Animation" id="Animation_bb0i0"]
-resource_name = "Death"
-length = 5.0
-step = 0.1
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:visible")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(3),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GPUParticles2D2:visible")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(3),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("GPUParticles2D:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(3),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("ColorRect:color")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(3, 5),
-"transitions": PackedFloat32Array(1, 2),
-"update": 0,
-"values": [Color(0, 0, 0, 0), Color(0, 0, 0, 1)]
-}
-tracks/4/type = "method"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath(".")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(4.99),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"GoToScene"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_vh54h"]
-resource_name = "Hit"
-length = 3.01
-step = 0.05
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:modulate")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
-"update": 0,
-"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1), Color(1, 1, 1, 0.392157), Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="Animation" id="Animation_gbl2x"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("Sprite2D:visible")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("GPUParticles2D2:visible")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("GPUParticles2D:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("ColorRect:color")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(0, 0, 0, 0)]
-}
-tracks/4/type = "value"
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/path = NodePath(".:modulate")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [Color(1, 1, 1, 1)]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_vkafp"]
-_data = {
-"Death": SubResource("Animation_bb0i0"),
-"Hit": SubResource("Animation_vh54h"),
-"RESET": SubResource("Animation_gbl2x")
-}
-
-[node name="Player" type="CharacterBody2D" groups=["Player"]]
-collision_layer = 4
-collision_mask = 4
-motion_mode = 1
-script = ExtResource("1_2bkpj")
-Speed = 400
-Bullet = ExtResource("2_ogm6h")
-FireRate = 0.04
-PlaneUp = ExtResource("3_t0dqt")
-PlaneNeutral = ExtResource("3_5g2vf")
-PlaneDown = ExtResource("5_ylcev")
-
-[node name="Area2D" type="Area2D" parent="."]
-position = Vector2(3, 3)
-
-[node name="EnemyCollider" type="CollisionShape2D" parent="Area2D"]
-position = Vector2(0.5, 3.5)
-shape = SubResource("RectangleShape2D_u1ywu")
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Area2D"]
-stream = ExtResource("3_apj4i")
-
-[node name="Gun" type="Node2D" parent="."]
-position = Vector2(1, 1)
-
-[node name="Marker2D" type="Marker2D" parent="Gun"]
-position = Vector2(85, 33)
-
-[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Gun"]
-stream = ExtResource("4_m3gyy")
-volume_db = -20.0
-max_polyphony = 2
-
-[node name="GPUParticles2D2" type="GPUParticles2D" parent="."]
-position = Vector2(-58, -16)
-amount = 500
-amount_ratio = 0.66
-process_material = SubResource("ParticleProcessMaterial_xtmdc")
-lifetime = 5.0
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-position = Vector2(7, 16)
-scale = Vector2(0.12, 0.12)
-texture = ExtResource("3_5g2vf")
-
-[node name="WallCollider" type="CollisionShape2D" parent="."]
-position = Vector2(4, 7)
-shape = SubResource("RectangleShape2D_u1ywu")
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
-position = Vector2(-70, -10)
-amount = 500
-amount_ratio = 0.66
-process_material = SubResource("ParticleProcessMaterial_xtmdc")
-lifetime = 5.0
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_vkafp")
-}
-
-[node name="ColorRect" type="ColorRect" parent="."]
-offset_left = -5000.0
-offset_top = -5000.0
-offset_right = 5000.0
-offset_bottom = 5000.0
-color = Color(0, 0, 0, 0)
-
-[connection signal="body_entered" from="Area2D" to="." method="_on_area_2d_body_entered"]
diff --git a/Project/Scripts/beginning&end.gd b/Project/Scripts/beginning&end.gd
deleted file mode 100644
index f2a8516..0000000
--- a/Project/Scripts/beginning&end.gd
+++ /dev/null
@@ -1,11 +0,0 @@
-extends Node2D
-
-@onready var Animator = get_node("AnimationPlayer")
-
-func _ready():
- Animator.play("anim")
-
-func NextLevel():
- Global.CurrentLevel += 1
- # take a look at the file and change it according to your naming scheme.
- get_tree().change_scene_to_file("res://Scenes/level_0" + var_to_str(Global.CurrentLevel) + ".tscn")
diff --git a/Project/Scripts/bullet.gd b/Project/Scripts/bullet.gd
deleted file mode 100644
index 4ae28cb..0000000
--- a/Project/Scripts/bullet.gd
+++ /dev/null
@@ -1,40 +0,0 @@
-extends RigidBody2D
-
-var Speed = 1200
-
-var DespawnTimer: float = 5
-var timer: float = 0
-@export var EnemyBullet: bool = false
-
-# rotato is here to fix a fucking bug. Thanks engine!
-@export var rotato: float
-var Direction: Vector2 = Vector2(0, 0)
-
-func _integrate_forces(_state: PhysicsDirectBodyState2D):
- self.linear_velocity = Direction * Speed
- self.rotation_degrees = rotato
- # Direction using trig
- Direction = Vector2(cos(deg_to_rad(rotato)), sin(deg_to_rad(rotato)))
- # Flip it correctly when rotated
- if rotato > 90 and rotato <= 270:
- get_node("Sprite2D").flip_v = true
-
-func _physics_process(delta: float):
- # Despawn to stop game from lagging
- timer += delta
- if timer >= DespawnTimer:
- self.queue_free()
-
-func _on_body_entered(body: Node) -> void:
- # Bullets collide into each other sometimes. Remove it by putting bullets into a group.
- if !body.is_in_group("Bullet") and EnemyBullet != true and body.is_in_group("Enemy"):
- body.set("Health", body.get("Health") - 1)
- get_node("AudioStreamPlayer").play()
- DespawnTimer = timer + 1
- # Don't disappear the bullet, the Audio needs to play!
- self.collision_layer = 0b0000
- self.collision_mask = 0b0000
- self.visible = false
- # for the player
- elif !body.is_in_group("Bullet") and EnemyBullet == true and body.is_in_group("Player"):
- body.TakeDamage()
diff --git a/Project/Scripts/enemy.gd b/Project/Scripts/enemy.gd
deleted file mode 100644
index 6303d66..0000000
--- a/Project/Scripts/enemy.gd
+++ /dev/null
@@ -1,59 +0,0 @@
-extends RigidBody2D
-
-@export_category("Basic Stuff")
-@export var Speed: int = 250
-@export var Health: int = 5
-@export var Direction: Vector2 = Vector2(-1, 0)
-@export var ScoreAmount: int = 200
-
-@export_category("Shooting")
-@export var IsShooting: bool = false
-@export var Bullet: PackedScene
-@export var FireSpeed: float = 1
-@export_range(0, 360) var BulletDirection: float = 0
-var FireTimer: float = 0
-
-@export_category("Other")
-@export var IsBoss: bool = false
-
-var DespawnTimer: float = 0
-
-func _ready():
- get_node("Arm").rotation_degrees = -BulletDirection
- if Direction.x == 1:
- get_node("AnimatedSprite2D").flip_h = true
-
-func _integrate_forces(_state: PhysicsDirectBodyState2D):
- self.linear_velocity = Direction * Speed
-
-func _process(delta: float):
- # Despawning
- DespawnTimer += delta
-
- # Despawn to free up processing time
- if DespawnTimer >= 30 and IsBoss == false:
- self.queue_free()
-
- # Shooting
- if IsShooting == true:
- FireTimer += delta
- if FireTimer >= FireSpeed:
- var bullet = Bullet.instantiate()
- bullet.rotato = -BulletDirection + 180
- bullet.transform = get_node("Arm/Marker2D").global_transform
- get_tree().current_scene.add_child(bullet)
- FireTimer = 0
-
- # Death
- if Health <= 0:
- Global.TotalScore += ScoreAmount
- if IsBoss == true:
- Despawn()
- else:
- self.queue_free()
-
-# FOR ANIMATION ONLY
-func Despawn():
- self.queue_free()
- # Laziness. Gets the waves.
- get_tree().current_scene.get_node("EnemyWaves").WaveWaits[get_tree().current_scene.get_node("EnemyWaves").CurrentWave] = 0
diff --git a/Project/Scripts/enemy_waves.gd b/Project/Scripts/enemy_waves.gd
deleted file mode 100644
index 8b000f3..0000000
--- a/Project/Scripts/enemy_waves.gd
+++ /dev/null
@@ -1,44 +0,0 @@
-extends Node2D
-
-# Wave stuff.
-@export_category("Waves")
-@export var WaveWaits: Array[float]
-@export var WaveScenes: Array[PackedScene]
-var WaveTimer: float = 0
-var CurrentWave: int = 0
-# Start to make sure no other waves spawn when fading.
-var Start: bool = false
-
-# Fading happens at the beginning and end of the level.
-@export_category("Fading")
-@export var BeginningFades: bool = true
-@export var BeginningFadeTime: float = 3
-@export var BeginningFade: PackedScene
-@export var EndingFades: bool = true
-@export var EndingFadeTime: float = 3
-@export var EndingFade: PackedScene
-
-func _ready():
- # This addition here is to make sure that the fade completes.
- if WaveWaits.size() != WaveScenes.size():
- push_error("The WaveWaits and the WaveScenes don't line up! Are you missing something?")
- if BeginningFades == true:
- Spawn(BeginningFade)
-
-func _process(delta: float):
- WaveTimer += delta
- if Start == false and WaveTimer >= BeginningFadeTime:
- Start = true
- WaveTimer = 0
- if CurrentWave != WaveScenes.size() and Start == true:
- if WaveTimer >= WaveWaits[CurrentWave]:
- Spawn(WaveScenes[CurrentWave])
- CurrentWave += 1
- if CurrentWave == WaveScenes.size() and WaveTimer >= EndingFadeTime:
- Spawn(EndingFade)
-
-func Spawn(Wave: PackedScene):
- var thing = Wave.instantiate()
- self.add_child(thing)
- thing.transform = self.global_transform
- WaveTimer = 0
diff --git a/Project/Scripts/global.gd b/Project/Scripts/global.gd
deleted file mode 100644
index 1eccde2..0000000
--- a/Project/Scripts/global.gd
+++ /dev/null
@@ -1,4 +0,0 @@
-extends Node
-
-var TotalScore: int = 0
-var CurrentLevel: int = 1
diff --git a/Project/Scripts/player.gd b/Project/Scripts/player.gd
deleted file mode 100644
index 0ec169c..0000000
--- a/Project/Scripts/player.gd
+++ /dev/null
@@ -1,95 +0,0 @@
-extends CharacterBody2D
-
-@export_category("Basic")
-@export var Health: int = 3
-@export var Speed: int
-@export var InvulnerabilityTime: int = 3
-var Invulnerable: bool = false
-var InvulnerabilityTimer: float = 0
-
-@export_category("Shooting")
-@export var Bullet: PackedScene
-@export var FireRate: float
-var FireRateTimer: float
-
-@export_category("Images")
-@export var PlaneUp: CompressedTexture2D
-@export var PlaneNeutral: CompressedTexture2D
-@export var PlaneDown: CompressedTexture2D
-
-@export_category("Other")
-@export var OnDeathScene: PackedScene
-
-var PlayerControl: bool = true
-
-signal PlayerTookDamage(Health: int)
-
-func _physics_process(delta: float) -> void:
- FireRateTimer += delta
-
- # Invulnerability. This is the segment that runs after taking damage.
- if Invulnerable == true:
- InvulnerabilityTimer += delta
- if InvulnerabilityTimer >= InvulnerabilityTime:
- Invulnerable = false
- InvulnerabilityTimer = 0
-
- if PlayerControl:
- # Movement
- var SpeedUp = Input.get_action_raw_strength("SpeedUp")
- var xdirection = Input.get_axis("Left", "Right")
- var ydirection = Input.get_axis("Up", "Down")
-
- if xdirection || ydirection:
- self.velocity = Vector2(xdirection, ydirection).normalized() * Speed * (SpeedUp + 1)
- # Adjust sprites on movement
- if ydirection == 1:
- get_node("Sprite2D").texture = PlaneDown
- elif ydirection == -1:
- get_node("Sprite2D").texture = PlaneUp
- else:
- get_node("Sprite2D").texture = PlaneNeutral
- else:
- # Stop the plane on not moving
- self.velocity.x = move_toward(velocity.x, 0, Speed)
- self.velocity.y = move_toward(velocity.y, 0, Speed)
- # yes, this has to be here. I know, really stupid.
- get_node("Sprite2D").texture = PlaneNeutral
-
- # Shooting
- if Input.get_action_raw_strength("Shoot") && FireRateTimer >= FireRate:
- var bullet = Bullet.instantiate()
- bullet.transform = get_node("Gun/Marker2D").global_transform
- get_tree().current_scene.add_child(bullet)
- FireRateTimer = 0
- get_node("Gun/AudioStreamPlayer").play()
- # If the player losses control (because they are dead)
- else:
- @warning_ignore("integer_division")
- self.velocity.y = Speed / 2
- self.velocity.x = move_toward(velocity.x, 0, Speed)
-
- # Don't use move_and_collide() because it sticks to the walls.
- move_and_slide()
-
-# If an enemy collides into the player, they run this function.
-func TakeDamage():
- Health -= 1
- Invulnerable = true
- PlayerTookDamage.emit(Health)
- get_node("Area2D/AudioStreamPlayer").play()
- if Health == 0:
- PlayerControl = false
- get_node("AnimationPlayer").play("Death")
- # Invulnerable so that way you won't be annoyed.
- InvulnerabilityTime = 5
- Invulnerable = true
- else:
- get_node("AnimationPlayer").play("Hit")
-
-func _on_area_2d_body_entered(_body: Node2D):
- if Invulnerable != true:
- TakeDamage()
-
-func GoToScene():
- get_tree().change_scene_to_packed(OnDeathScene)
diff --git a/Project/Sound/Explosion.ogg.import b/Project/Sound/Explosion.ogg.import
deleted file mode 100644
index 621ea06..0000000
--- a/Project/Sound/Explosion.ogg.import
+++ /dev/null
@@ -1,19 +0,0 @@
-[remap]
-
-importer="oggvorbisstr"
-type="AudioStreamOggVorbis"
-uid="uid://dg1f8fv4a2jdm"
-path="res://.godot/imported/Explosion.ogg-76a64175d2e606bc2460caa0820fe595.oggvorbisstr"
-
-[deps]
-
-source_file="res://Sound/Explosion.ogg"
-dest_files=["res://.godot/imported/Explosion.ogg-76a64175d2e606bc2460caa0820fe595.oggvorbisstr"]
-
-[params]
-
-loop=false
-loop_offset=0
-bpm=0
-beat_count=0
-bar_beats=4
diff --git a/Project/Sound/HitHurt.ogg.import b/Project/Sound/HitHurt.ogg.import
deleted file mode 100644
index 6c3541a..0000000
--- a/Project/Sound/HitHurt.ogg.import
+++ /dev/null
@@ -1,19 +0,0 @@
-[remap]
-
-importer="oggvorbisstr"
-type="AudioStreamOggVorbis"
-uid="uid://b4r0manp60hb4"
-path="res://.godot/imported/HitHurt.ogg-2a583b9aec11a8462b2fcffdb56bf141.oggvorbisstr"
-
-[deps]
-
-source_file="res://Sound/HitHurt.ogg"
-dest_files=["res://.godot/imported/HitHurt.ogg-2a583b9aec11a8462b2fcffdb56bf141.oggvorbisstr"]
-
-[params]
-
-loop=false
-loop_offset=0
-bpm=0
-beat_count=0
-bar_beats=4
diff --git a/Project/Sound/Shoot.ogg.import b/Project/Sound/Shoot.ogg.import
deleted file mode 100644
index 7440182..0000000
--- a/Project/Sound/Shoot.ogg.import
+++ /dev/null
@@ -1,19 +0,0 @@
-[remap]
-
-importer="oggvorbisstr"
-type="AudioStreamOggVorbis"
-uid="uid://do4a5aj5a0216"
-path="res://.godot/imported/Shoot.ogg-cdfe63fa3222cfd5421dd092c227b166.oggvorbisstr"
-
-[deps]
-
-source_file="res://Sound/Shoot.ogg"
-dest_files=["res://.godot/imported/Shoot.ogg-cdfe63fa3222cfd5421dd092c227b166.oggvorbisstr"]
-
-[params]
-
-loop=false
-loop_offset=0
-bpm=0
-beat_count=0
-bar_beats=4
diff --git a/Project/Sound/Warning.ogg.import b/Project/Sound/Warning.ogg.import
deleted file mode 100644
index 80a4803..0000000
--- a/Project/Sound/Warning.ogg.import
+++ /dev/null
@@ -1,19 +0,0 @@
-[remap]
-
-importer="oggvorbisstr"
-type="AudioStreamOggVorbis"
-uid="uid://712ydomf0toh"
-path="res://.godot/imported/Warning.ogg-61ef46343fb335fec2c2fa977b0a5d2d.oggvorbisstr"
-
-[deps]
-
-source_file="res://Sound/Warning.ogg"
-dest_files=["res://.godot/imported/Warning.ogg-61ef46343fb335fec2c2fa977b0a5d2d.oggvorbisstr"]
-
-[params]
-
-loop=false
-loop_offset=0
-bpm=0
-beat_count=0
-bar_beats=4
diff --git a/Project/Sound/fire-truck-siren-29900.ogg.import b/Project/Sound/fire-truck-siren-29900.ogg.import
deleted file mode 100644
index 42d7b1c..0000000
--- a/Project/Sound/fire-truck-siren-29900.ogg.import
+++ /dev/null
@@ -1,19 +0,0 @@
-[remap]
-
-importer="oggvorbisstr"
-type="AudioStreamOggVorbis"
-uid="uid://hfgqomflicxl"
-path="res://.godot/imported/fire-truck-siren-29900.ogg-293920dfe65a6aa575457bf522aadf53.oggvorbisstr"
-
-[deps]
-
-source_file="res://Sound/fire-truck-siren-29900.ogg"
-dest_files=["res://.godot/imported/fire-truck-siren-29900.ogg-293920dfe65a6aa575457bf522aadf53.oggvorbisstr"]
-
-[params]
-
-loop=false
-loop_offset=0
-bpm=0
-beat_count=0
-bar_beats=4
diff --git a/Project/Textures/Bullet.png b/Project/Textures/Bullet.png
deleted file mode 100644
index d999993..0000000
Binary files a/Project/Textures/Bullet.png and /dev/null differ
diff --git a/Project/Textures/Bullet.png.import b/Project/Textures/Bullet.png.import
deleted file mode 100644
index be901b9..0000000
--- a/Project/Textures/Bullet.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d07qtvmhqjjts"
-path="res://.godot/imported/Bullet.png-32941e411708a571ab6cd2dd7dcde3b0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Bullet.png"
-dest_files=["res://.godot/imported/Bullet.png-32941e411708a571ab6cd2dd7dcde3b0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin b/Project/Textures/Coin/Coin
deleted file mode 100644
index e69de29..0000000
diff --git a/Project/Textures/Coin/Coin 1.png b/Project/Textures/Coin/Coin 1.png
deleted file mode 100644
index 77e586a..0000000
--- a/Project/Textures/Coin/Coin 1.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5159e2056ed8d6e528076e919d7727d352b4f863b0cd8b34aecfd217ea44341f
-size 574469
diff --git a/Project/Textures/Coin/Coin 1.png.import b/Project/Textures/Coin/Coin 1.png.import
deleted file mode 100644
index 9f2c5c8..0000000
--- a/Project/Textures/Coin/Coin 1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dw3bcaslqj467"
-path="res://.godot/imported/Coin 1.png-3d08bfc7055a8a4f1dfe05ea2e4faac6.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 1.png"
-dest_files=["res://.godot/imported/Coin 1.png-3d08bfc7055a8a4f1dfe05ea2e4faac6.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 10.png b/Project/Textures/Coin/Coin 10.png
deleted file mode 100644
index c09e107..0000000
--- a/Project/Textures/Coin/Coin 10.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ec55e7cc867c7dc51fbbedc0e350a801a0ae859070d76b36eaea13225e15216
-size 328932
diff --git a/Project/Textures/Coin/Coin 10.png.import b/Project/Textures/Coin/Coin 10.png.import
deleted file mode 100644
index 5e2fb01..0000000
--- a/Project/Textures/Coin/Coin 10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cjsoadwiu0248"
-path="res://.godot/imported/Coin 10.png-f7e97b048b4c09d2d9ecaa42cd379d0d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 10.png"
-dest_files=["res://.godot/imported/Coin 10.png-f7e97b048b4c09d2d9ecaa42cd379d0d.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 11.png b/Project/Textures/Coin/Coin 11.png
deleted file mode 100644
index b9eac8f..0000000
--- a/Project/Textures/Coin/Coin 11.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a95d5c2cd32440e95e69e3b613c198cbe2e7b2074b5f12cae1edf19125f0ca47
-size 404175
diff --git a/Project/Textures/Coin/Coin 11.png.import b/Project/Textures/Coin/Coin 11.png.import
deleted file mode 100644
index dd76028..0000000
--- a/Project/Textures/Coin/Coin 11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://l2jd4lf4x4ip"
-path="res://.godot/imported/Coin 11.png-bed7782e94484007d962c4cbaee76c7b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 11.png"
-dest_files=["res://.godot/imported/Coin 11.png-bed7782e94484007d962c4cbaee76c7b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 12.png b/Project/Textures/Coin/Coin 12.png
deleted file mode 100644
index d893e52..0000000
--- a/Project/Textures/Coin/Coin 12.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:146c390f15ebc388158c834a7e5155c0988a651486ea0f659edb0bccae65d444
-size 587659
diff --git a/Project/Textures/Coin/Coin 12.png.import b/Project/Textures/Coin/Coin 12.png.import
deleted file mode 100644
index 217e16b..0000000
--- a/Project/Textures/Coin/Coin 12.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://damvch2xehg0m"
-path="res://.godot/imported/Coin 12.png-18d002744ae28a9d1c6f649b2d83c4a8.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 12.png"
-dest_files=["res://.godot/imported/Coin 12.png-18d002744ae28a9d1c6f649b2d83c4a8.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 13.png b/Project/Textures/Coin/Coin 13.png
deleted file mode 100644
index 382ed22..0000000
--- a/Project/Textures/Coin/Coin 13.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c2ffe448d58467961c8f09a52e5b7447f6f56a737135fee8e69a2a7d1c30186
-size 518720
diff --git a/Project/Textures/Coin/Coin 13.png.import b/Project/Textures/Coin/Coin 13.png.import
deleted file mode 100644
index be0b3ed..0000000
--- a/Project/Textures/Coin/Coin 13.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ctmtjvr8jqpq"
-path="res://.godot/imported/Coin 13.png-5f6d470fdd97dbe3b1084a2e82f112d1.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 13.png"
-dest_files=["res://.godot/imported/Coin 13.png-5f6d470fdd97dbe3b1084a2e82f112d1.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 14.png b/Project/Textures/Coin/Coin 14.png
deleted file mode 100644
index fa5244a..0000000
--- a/Project/Textures/Coin/Coin 14.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9e68fd64c2df470d4770865372c879f198d7f60a31b3568953c9f64b28dbc06b
-size 207390
diff --git a/Project/Textures/Coin/Coin 14.png.import b/Project/Textures/Coin/Coin 14.png.import
deleted file mode 100644
index 62bd641..0000000
--- a/Project/Textures/Coin/Coin 14.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://vm6wphb3xf2s"
-path="res://.godot/imported/Coin 14.png-be3a438ee73d66e751528b6bce811d45.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 14.png"
-dest_files=["res://.godot/imported/Coin 14.png-be3a438ee73d66e751528b6bce811d45.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 15.png b/Project/Textures/Coin/Coin 15.png
deleted file mode 100644
index b82994d..0000000
--- a/Project/Textures/Coin/Coin 15.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:82c120d19fd91d230006d74d2062e343ef5d22fb58049e4c45255cd91b8f8c2e
-size 487214
diff --git a/Project/Textures/Coin/Coin 15.png.import b/Project/Textures/Coin/Coin 15.png.import
deleted file mode 100644
index c2e4b21..0000000
--- a/Project/Textures/Coin/Coin 15.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ct2oc7jj6u6n3"
-path="res://.godot/imported/Coin 15.png-917ad0398ea7b5ccdafedbe9e8a95fed.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 15.png"
-dest_files=["res://.godot/imported/Coin 15.png-917ad0398ea7b5ccdafedbe9e8a95fed.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 2.png b/Project/Textures/Coin/Coin 2.png
deleted file mode 100644
index 9b5e16d..0000000
--- a/Project/Textures/Coin/Coin 2.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8a2e0b9e1f1670bde8cf3dd14af8bfb46b0612ec72a9be168aed4372d1a80f8f
-size 482564
diff --git a/Project/Textures/Coin/Coin 2.png.import b/Project/Textures/Coin/Coin 2.png.import
deleted file mode 100644
index 1389f66..0000000
--- a/Project/Textures/Coin/Coin 2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cnpg71q8pydtg"
-path="res://.godot/imported/Coin 2.png-528a0bb81d96b26766037b8e21307fc5.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 2.png"
-dest_files=["res://.godot/imported/Coin 2.png-528a0bb81d96b26766037b8e21307fc5.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 3.png b/Project/Textures/Coin/Coin 3.png
deleted file mode 100644
index 301ea25..0000000
--- a/Project/Textures/Coin/Coin 3.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:461a6d7943c08ee5c04d5ca9b1fda5241af787ce53f78d37fd2b38523e393afb
-size 208879
diff --git a/Project/Textures/Coin/Coin 3.png.import b/Project/Textures/Coin/Coin 3.png.import
deleted file mode 100644
index f9c7c54..0000000
--- a/Project/Textures/Coin/Coin 3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c0kygvqnsfse5"
-path="res://.godot/imported/Coin 3.png-32019c35f5dd0bb41d17f14e216f186e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 3.png"
-dest_files=["res://.godot/imported/Coin 3.png-32019c35f5dd0bb41d17f14e216f186e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 4.png b/Project/Textures/Coin/Coin 4.png
deleted file mode 100644
index d147243..0000000
--- a/Project/Textures/Coin/Coin 4.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2d04565a85ebd734815ba631e3823bb587be6f7351ab0f1b49673000ca241e64
-size 527753
diff --git a/Project/Textures/Coin/Coin 4.png.import b/Project/Textures/Coin/Coin 4.png.import
deleted file mode 100644
index b5e4803..0000000
--- a/Project/Textures/Coin/Coin 4.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c21ggslv66qpg"
-path="res://.godot/imported/Coin 4.png-96cec979d5f038996ba567f48f5fd065.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 4.png"
-dest_files=["res://.godot/imported/Coin 4.png-96cec979d5f038996ba567f48f5fd065.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 5.png b/Project/Textures/Coin/Coin 5.png
deleted file mode 100644
index c1f3e11..0000000
--- a/Project/Textures/Coin/Coin 5.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:89f3ac3d691e38509ff3cfd0b88d97a05a4a9690cf832803ceea3b8eed604550
-size 580665
diff --git a/Project/Textures/Coin/Coin 5.png.import b/Project/Textures/Coin/Coin 5.png.import
deleted file mode 100644
index 6e099b3..0000000
--- a/Project/Textures/Coin/Coin 5.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dn2vx0de2c724"
-path="res://.godot/imported/Coin 5.png-3739409acbbdd51fb37d694315b10bc7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 5.png"
-dest_files=["res://.godot/imported/Coin 5.png-3739409acbbdd51fb37d694315b10bc7.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 6.png b/Project/Textures/Coin/Coin 6.png
deleted file mode 100644
index b193de2..0000000
--- a/Project/Textures/Coin/Coin 6.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f30a2d26c8321455a877172b870ac929819a68792b37e6f066a412af36a1bdad
-size 396671
diff --git a/Project/Textures/Coin/Coin 6.png.import b/Project/Textures/Coin/Coin 6.png.import
deleted file mode 100644
index 792eee3..0000000
--- a/Project/Textures/Coin/Coin 6.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cro4ea1qh3kj8"
-path="res://.godot/imported/Coin 6.png-df1dc11f1b83a6e12de5662ad6327c0a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 6.png"
-dest_files=["res://.godot/imported/Coin 6.png-df1dc11f1b83a6e12de5662ad6327c0a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 7.png b/Project/Textures/Coin/Coin 7.png
deleted file mode 100644
index 92abd56..0000000
--- a/Project/Textures/Coin/Coin 7.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e58c7ebf53d0680c8156fc2c3d59694af8841658db39d1eeb189a17186a0674c
-size 336383
diff --git a/Project/Textures/Coin/Coin 7.png.import b/Project/Textures/Coin/Coin 7.png.import
deleted file mode 100644
index 6f8fb36..0000000
--- a/Project/Textures/Coin/Coin 7.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bb8bpnqbtgd0x"
-path="res://.godot/imported/Coin 7.png-df7b6295fee753ab33fb3b3cc18423ec.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 7.png"
-dest_files=["res://.godot/imported/Coin 7.png-df7b6295fee753ab33fb3b3cc18423ec.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 8.png b/Project/Textures/Coin/Coin 8.png
deleted file mode 100644
index 6e30f71..0000000
--- a/Project/Textures/Coin/Coin 8.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f71d179633789d385ba05954c154b4d06595c9517569c0b3a0633812bb320f1c
-size 576934
diff --git a/Project/Textures/Coin/Coin 8.png.import b/Project/Textures/Coin/Coin 8.png.import
deleted file mode 100644
index 9aca751..0000000
--- a/Project/Textures/Coin/Coin 8.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d0lqxih7m0e5w"
-path="res://.godot/imported/Coin 8.png-75f6628e05f5f0059ae18297128c37b7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 8.png"
-dest_files=["res://.godot/imported/Coin 8.png-75f6628e05f5f0059ae18297128c37b7.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Coin/Coin 9.png b/Project/Textures/Coin/Coin 9.png
deleted file mode 100644
index 6dfb748..0000000
--- a/Project/Textures/Coin/Coin 9.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bfd73ec34d30fec09e8f0c6357e3d161082c42e1ed79206622794eedea39e73a
-size 573455
diff --git a/Project/Textures/Coin/Coin 9.png.import b/Project/Textures/Coin/Coin 9.png.import
deleted file mode 100644
index 663a675..0000000
--- a/Project/Textures/Coin/Coin 9.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c8w32asukhshm"
-path="res://.godot/imported/Coin 9.png-5ca07d1ca06d0bd4fa7ca6396017801b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Coin/Coin 9.png"
-dest_files=["res://.godot/imported/Coin 9.png-5ca07d1ca06d0bd4fa7ca6396017801b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Hud.png.import b/Project/Textures/Hud.png.import
deleted file mode 100644
index 6d7bbff..0000000
--- a/Project/Textures/Hud.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://8s5wyy4abpnr"
-path="res://.godot/imported/Hud.png-748abe0950dc8a99d49dfe273c2cf2a4.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Hud.png"
-dest_files=["res://.godot/imported/Hud.png-748abe0950dc8a99d49dfe273c2cf2a4.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Hudfill.png.import b/Project/Textures/Hudfill.png.import
deleted file mode 100644
index a628202..0000000
--- a/Project/Textures/Hudfill.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cunprfaqhrw10"
-path="res://.godot/imported/Hudfill.png-7f4021dc14001944b55dcd494854fd4f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Hudfill.png"
-dest_files=["res://.godot/imported/Hudfill.png-7f4021dc14001944b55dcd494854fd4f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Level01/Sky1.png.import b/Project/Textures/Level01/Sky1.png.import
deleted file mode 100644
index 0b1f294..0000000
--- a/Project/Textures/Level01/Sky1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://88sgqxmugeto"
-path="res://.godot/imported/Sky1.png-cab205266ad8cd3b6d25078675c69929.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Level01/Sky1.png"
-dest_files=["res://.godot/imported/Sky1.png-cab205266ad8cd3b6d25078675c69929.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Level01/Sky2.png b/Project/Textures/Level01/Sky2.png
deleted file mode 100644
index bf0066c..0000000
Binary files a/Project/Textures/Level01/Sky2.png and /dev/null differ
diff --git a/Project/Textures/Level01/Sky2.png.import b/Project/Textures/Level01/Sky2.png.import
deleted file mode 100644
index cde1385..0000000
--- a/Project/Textures/Level01/Sky2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://xlfmu7wr8mhb"
-path="res://.godot/imported/Sky2.png-fb9dab875d636c18dce0079797dbd2fd.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Level01/Sky2.png"
-dest_files=["res://.godot/imported/Sky2.png-fb9dab875d636c18dce0079797dbd2fd.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Level01/Sky3.png.import b/Project/Textures/Level01/Sky3.png.import
deleted file mode 100644
index f0c5dc7..0000000
--- a/Project/Textures/Level01/Sky3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://w527cw3q2qhm"
-path="res://.godot/imported/Sky3.png-ff79e3870efa0ea93970f42b58b9b466.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Level01/Sky3.png"
-dest_files=["res://.godot/imported/Sky3.png-ff79e3870efa0ea93970f42b58b9b466.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Plane/Plane.png b/Project/Textures/Plane/Plane.png
deleted file mode 100644
index 092ab10..0000000
Binary files a/Project/Textures/Plane/Plane.png and /dev/null differ
diff --git a/Project/Textures/Plane/Plane.png.import b/Project/Textures/Plane/Plane.png.import
deleted file mode 100644
index 33be770..0000000
--- a/Project/Textures/Plane/Plane.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c5kt81t5h4vgn"
-path="res://.godot/imported/Plane.png-5c9c0b3308e89dd147646ecbcc193908.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Plane/Plane.png"
-dest_files=["res://.godot/imported/Plane.png-5c9c0b3308e89dd147646ecbcc193908.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Plane/PlaneDown.png b/Project/Textures/Plane/PlaneDown.png
deleted file mode 100644
index e36a53d..0000000
Binary files a/Project/Textures/Plane/PlaneDown.png and /dev/null differ
diff --git a/Project/Textures/Plane/PlaneDown.png.import b/Project/Textures/Plane/PlaneDown.png.import
deleted file mode 100644
index 4b49d09..0000000
--- a/Project/Textures/Plane/PlaneDown.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bff4pkabs2ecf"
-path="res://.godot/imported/PlaneDown.png-8fbd2c6958c47a626200124d11d90c7a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Plane/PlaneDown.png"
-dest_files=["res://.godot/imported/PlaneDown.png-8fbd2c6958c47a626200124d11d90c7a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Plane/PlaneUp.png b/Project/Textures/Plane/PlaneUp.png
deleted file mode 100644
index cd54506..0000000
Binary files a/Project/Textures/Plane/PlaneUp.png and /dev/null differ
diff --git a/Project/Textures/Plane/PlaneUp.png.import b/Project/Textures/Plane/PlaneUp.png.import
deleted file mode 100644
index 463a781..0000000
--- a/Project/Textures/Plane/PlaneUp.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bcbjh2amre7ke"
-path="res://.godot/imported/PlaneUp.png-227c2e1f35b0062363336996051130cc.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Plane/PlaneUp.png"
-dest_files=["res://.godot/imported/PlaneUp.png-227c2e1f35b0062363336996051130cc.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route b/Project/Textures/Route/Route
deleted file mode 100644
index e69de29..0000000
diff --git a/Project/Textures/Route/Route 1.png b/Project/Textures/Route/Route 1.png
deleted file mode 100644
index 39f357f..0000000
--- a/Project/Textures/Route/Route 1.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d657842c71aaf5b07abece8bfab7b581f08c3a5ad00edaac739e577819067b80
-size 299127
diff --git a/Project/Textures/Route/Route 1.png.import b/Project/Textures/Route/Route 1.png.import
deleted file mode 100644
index 80a53f7..0000000
--- a/Project/Textures/Route/Route 1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://blrbc8mp71nub"
-path="res://.godot/imported/Route 1.png-977f100c944783b2e53bd51791e63a4e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 1.png"
-dest_files=["res://.godot/imported/Route 1.png-977f100c944783b2e53bd51791e63a4e.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 10.png b/Project/Textures/Route/Route 10.png
deleted file mode 100644
index a5373db..0000000
--- a/Project/Textures/Route/Route 10.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f9b03d40fca9e21047e3a0ecb524a5e59e2b851de7e1628b61eef7f788d460fe
-size 300999
diff --git a/Project/Textures/Route/Route 10.png.import b/Project/Textures/Route/Route 10.png.import
deleted file mode 100644
index 8f83a1e..0000000
--- a/Project/Textures/Route/Route 10.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dtgyeeu1t0n7h"
-path="res://.godot/imported/Route 10.png-0cc49fca0eee426d95a25ee63247cf66.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 10.png"
-dest_files=["res://.godot/imported/Route 10.png-0cc49fca0eee426d95a25ee63247cf66.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 11.png b/Project/Textures/Route/Route 11.png
deleted file mode 100644
index c814ce7..0000000
--- a/Project/Textures/Route/Route 11.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d4ac55b99376d1ad08337eb50c4bf103a5d8d3f383074ccd648f4983ad56f01b
-size 299127
diff --git a/Project/Textures/Route/Route 11.png.import b/Project/Textures/Route/Route 11.png.import
deleted file mode 100644
index 5b83baf..0000000
--- a/Project/Textures/Route/Route 11.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b1xcgdrf6sdbp"
-path="res://.godot/imported/Route 11.png-40851d05237185fde1281845e19fb965.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 11.png"
-dest_files=["res://.godot/imported/Route 11.png-40851d05237185fde1281845e19fb965.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 2.png b/Project/Textures/Route/Route 2.png
deleted file mode 100644
index b34837f..0000000
--- a/Project/Textures/Route/Route 2.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0fb45e62ff312251c7ec6ddbab45fe6fb37bb48aae54607599495c4ae0f9b605
-size 299569
diff --git a/Project/Textures/Route/Route 2.png.import b/Project/Textures/Route/Route 2.png.import
deleted file mode 100644
index bc44983..0000000
--- a/Project/Textures/Route/Route 2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cphw4low4de4b"
-path="res://.godot/imported/Route 2.png-4b9b181badd0c7b00286db2f169d3838.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 2.png"
-dest_files=["res://.godot/imported/Route 2.png-4b9b181badd0c7b00286db2f169d3838.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 3.png b/Project/Textures/Route/Route 3.png
deleted file mode 100644
index e4a2e49..0000000
--- a/Project/Textures/Route/Route 3.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a3294b7fbd6fd23b5125f031db5b92f6d1ca5a2de0a0cb09505d52cc16685448
-size 287668
diff --git a/Project/Textures/Route/Route 3.png.import b/Project/Textures/Route/Route 3.png.import
deleted file mode 100644
index 02a7fd3..0000000
--- a/Project/Textures/Route/Route 3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dwdn12rkkr1uo"
-path="res://.godot/imported/Route 3.png-1151ddf1537952ae4e4668399e6bc755.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 3.png"
-dest_files=["res://.godot/imported/Route 3.png-1151ddf1537952ae4e4668399e6bc755.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 4.png b/Project/Textures/Route/Route 4.png
deleted file mode 100644
index 25e6ebb..0000000
--- a/Project/Textures/Route/Route 4.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6549655f1890fddeac00dc0430a68343b66038fc02b9c4bef0c41124084647a4
-size 260343
diff --git a/Project/Textures/Route/Route 4.png.import b/Project/Textures/Route/Route 4.png.import
deleted file mode 100644
index 4113de2..0000000
--- a/Project/Textures/Route/Route 4.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bbupn4br1fog7"
-path="res://.godot/imported/Route 4.png-b1b5ae61ec83ffde06ff3b641da4f972.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 4.png"
-dest_files=["res://.godot/imported/Route 4.png-b1b5ae61ec83ffde06ff3b641da4f972.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 5.png b/Project/Textures/Route/Route 5.png
deleted file mode 100644
index 758fa1c..0000000
--- a/Project/Textures/Route/Route 5.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4d0010a32e825ed0a0f0d8dc0322f29a17cac961759c0bab7c40e77d7350b872
-size 271846
diff --git a/Project/Textures/Route/Route 5.png.import b/Project/Textures/Route/Route 5.png.import
deleted file mode 100644
index 73ff177..0000000
--- a/Project/Textures/Route/Route 5.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://tfbp816emics"
-path="res://.godot/imported/Route 5.png-c75d7e6aec21ee14265375e228ad3e2b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 5.png"
-dest_files=["res://.godot/imported/Route 5.png-c75d7e6aec21ee14265375e228ad3e2b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 6.png b/Project/Textures/Route/Route 6.png
deleted file mode 100644
index 1c633c3..0000000
--- a/Project/Textures/Route/Route 6.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:58c10cda4bb3078bf63f702a36d0958f541b745dd80f75bfaf33325535d40ba2
-size 288000
diff --git a/Project/Textures/Route/Route 6.png.import b/Project/Textures/Route/Route 6.png.import
deleted file mode 100644
index 5b53374..0000000
--- a/Project/Textures/Route/Route 6.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cl0sil1psnxs1"
-path="res://.godot/imported/Route 6.png-0f058c5c49db8ea222fc5ac610aa2f07.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 6.png"
-dest_files=["res://.godot/imported/Route 6.png-0f058c5c49db8ea222fc5ac610aa2f07.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 7.png b/Project/Textures/Route/Route 7.png
deleted file mode 100644
index c3b1778..0000000
--- a/Project/Textures/Route/Route 7.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:58f6ad84583f04a5ecd796d1973ce390e9200eb586c1ce893c0c25a9b84843c7
-size 269505
diff --git a/Project/Textures/Route/Route 7.png.import b/Project/Textures/Route/Route 7.png.import
deleted file mode 100644
index 973caff..0000000
--- a/Project/Textures/Route/Route 7.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cgv78fuua01eg"
-path="res://.godot/imported/Route 7.png-22d131c6138be95427e23d53d7ca813a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 7.png"
-dest_files=["res://.godot/imported/Route 7.png-22d131c6138be95427e23d53d7ca813a.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 8.png b/Project/Textures/Route/Route 8.png
deleted file mode 100644
index 688810c..0000000
--- a/Project/Textures/Route/Route 8.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:828d2b5be64e32c9c973d11a2a7acd8b9df8cfccaf1a373d5de6f8efbefac572
-size 254498
diff --git a/Project/Textures/Route/Route 8.png.import b/Project/Textures/Route/Route 8.png.import
deleted file mode 100644
index 632d10a..0000000
--- a/Project/Textures/Route/Route 8.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://y2e4mmb2u3h5"
-path="res://.godot/imported/Route 8.png-b7cb08106397ad2034b0f2b025f2378f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 8.png"
-dest_files=["res://.godot/imported/Route 8.png-b7cb08106397ad2034b0f2b025f2378f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Route/Route 9.png b/Project/Textures/Route/Route 9.png
deleted file mode 100644
index 67ae907..0000000
--- a/Project/Textures/Route/Route 9.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c5ffbaca22fdce98da38b1973fadb99f5936f3d7418f8294b0341dcc6ec7150e
-size 293473
diff --git a/Project/Textures/Route/Route 9.png.import b/Project/Textures/Route/Route 9.png.import
deleted file mode 100644
index edd4d4b..0000000
--- a/Project/Textures/Route/Route 9.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cfonr11og4um"
-path="res://.godot/imported/Route 9.png-adf7e8acfd29c5fb25f211d28e9a66bc.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Route/Route 9.png"
-dest_files=["res://.godot/imported/Route 9.png-adf7e8acfd29c5fb25f211d28e9a66bc.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale b/Project/Textures/Whale/Whale
deleted file mode 100644
index e69de29..0000000
diff --git a/Project/Textures/Whale/Whale 1.png b/Project/Textures/Whale/Whale 1.png
deleted file mode 100644
index ae279f9..0000000
--- a/Project/Textures/Whale/Whale 1.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5d7a04e85ba2014b87349b859f31749099b6c908a5dc3c15850a5b3aaa17cd47
-size 296801
diff --git a/Project/Textures/Whale/Whale 1.png.import b/Project/Textures/Whale/Whale 1.png.import
deleted file mode 100644
index 95be799..0000000
--- a/Project/Textures/Whale/Whale 1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b2res51c25avx"
-path="res://.godot/imported/Whale 1.png-5a78715c46b0866a2464a2b4b75ad7a9.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 1.png"
-dest_files=["res://.godot/imported/Whale 1.png-5a78715c46b0866a2464a2b4b75ad7a9.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 2.png b/Project/Textures/Whale/Whale 2.png
deleted file mode 100644
index 9afa355..0000000
--- a/Project/Textures/Whale/Whale 2.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cd9cca71bd9a5860fa29ddb63adacd0a06a71dd150957c1faaf7b98657bb4ab1
-size 306810
diff --git a/Project/Textures/Whale/Whale 2.png.import b/Project/Textures/Whale/Whale 2.png.import
deleted file mode 100644
index ad7afa5..0000000
--- a/Project/Textures/Whale/Whale 2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://s3ici4urgkpp"
-path="res://.godot/imported/Whale 2.png-c70e6c0724be99b578c74df97947e7ab.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 2.png"
-dest_files=["res://.godot/imported/Whale 2.png-c70e6c0724be99b578c74df97947e7ab.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 3.png b/Project/Textures/Whale/Whale 3.png
deleted file mode 100644
index b448c40..0000000
--- a/Project/Textures/Whale/Whale 3.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0540829d7c48552664caa47aca1621e7c59a88d102f6655ac1094e99913f534e
-size 309017
diff --git a/Project/Textures/Whale/Whale 3.png.import b/Project/Textures/Whale/Whale 3.png.import
deleted file mode 100644
index bfcf8c3..0000000
--- a/Project/Textures/Whale/Whale 3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://xvmxbxost161"
-path="res://.godot/imported/Whale 3.png-658989ced22589fc6067bc5f72f29926.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 3.png"
-dest_files=["res://.godot/imported/Whale 3.png-658989ced22589fc6067bc5f72f29926.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 4.png b/Project/Textures/Whale/Whale 4.png
deleted file mode 100644
index 388743d..0000000
--- a/Project/Textures/Whale/Whale 4.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:699eb3413a04a49205accd82539228a68154296bbc6048e56dbe7ee8a311bf03
-size 307902
diff --git a/Project/Textures/Whale/Whale 4.png.import b/Project/Textures/Whale/Whale 4.png.import
deleted file mode 100644
index 651ca81..0000000
--- a/Project/Textures/Whale/Whale 4.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d13ht078u72ob"
-path="res://.godot/imported/Whale 4.png-bca29652b55852c1d3d24498682c1b6c.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 4.png"
-dest_files=["res://.godot/imported/Whale 4.png-bca29652b55852c1d3d24498682c1b6c.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 5.png b/Project/Textures/Whale/Whale 5.png
deleted file mode 100644
index 8a9c268..0000000
--- a/Project/Textures/Whale/Whale 5.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:606c100f1356be7a70310e8a2c0c20f11098983d6056f3061bfd7bdf85345507
-size 298510
diff --git a/Project/Textures/Whale/Whale 5.png.import b/Project/Textures/Whale/Whale 5.png.import
deleted file mode 100644
index b2e1a0a..0000000
--- a/Project/Textures/Whale/Whale 5.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dmdonnxkc6q5y"
-path="res://.godot/imported/Whale 5.png-e23c532e628255fde88bb845903d822f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 5.png"
-dest_files=["res://.godot/imported/Whale 5.png-e23c532e628255fde88bb845903d822f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 6.png b/Project/Textures/Whale/Whale 6.png
deleted file mode 100644
index e76caf9..0000000
--- a/Project/Textures/Whale/Whale 6.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30876c23382268d18b883b627aef2d3fecbb45dabd40554f03163eb8d844d878
-size 306950
diff --git a/Project/Textures/Whale/Whale 6.png.import b/Project/Textures/Whale/Whale 6.png.import
deleted file mode 100644
index e0e9386..0000000
--- a/Project/Textures/Whale/Whale 6.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://mk3erlmynh73"
-path="res://.godot/imported/Whale 6.png-f0dddbc6b7dab4481be699509602072f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 6.png"
-dest_files=["res://.godot/imported/Whale 6.png-f0dddbc6b7dab4481be699509602072f.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 7.png b/Project/Textures/Whale/Whale 7.png
deleted file mode 100644
index 19bea75..0000000
--- a/Project/Textures/Whale/Whale 7.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4557daf5a5f7b2fa8e31a543b80bf06643113f49a0ff36ad7932a60e9e34a485
-size 316430
diff --git a/Project/Textures/Whale/Whale 7.png.import b/Project/Textures/Whale/Whale 7.png.import
deleted file mode 100644
index 3e87669..0000000
--- a/Project/Textures/Whale/Whale 7.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dqlcy084umvmy"
-path="res://.godot/imported/Whale 7.png-a3ae6b44af851468c4b3d50893e1bdbe.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 7.png"
-dest_files=["res://.godot/imported/Whale 7.png-a3ae6b44af851468c4b3d50893e1bdbe.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 8.png b/Project/Textures/Whale/Whale 8.png
deleted file mode 100644
index e1da53e..0000000
--- a/Project/Textures/Whale/Whale 8.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:390686284f08e050a7c4bf7c537df086a8bb893cfcd97eac7e1332cdbb2db03c
-size 313360
diff --git a/Project/Textures/Whale/Whale 8.png.import b/Project/Textures/Whale/Whale 8.png.import
deleted file mode 100644
index 8af32bd..0000000
--- a/Project/Textures/Whale/Whale 8.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bkiv5st0na5lf"
-path="res://.godot/imported/Whale 8.png-e25c4d8fdebab81398447227963ee4a3.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 8.png"
-dest_files=["res://.godot/imported/Whale 8.png-e25c4d8fdebab81398447227963ee4a3.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/Textures/Whale/Whale 9.png b/Project/Textures/Whale/Whale 9.png
deleted file mode 100644
index 5943004..0000000
--- a/Project/Textures/Whale/Whale 9.png
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a39e5928379bd29edaa93106c4ff7fb6362e3e6b27286b08f75c30833eee9e86
-size 296393
diff --git a/Project/Textures/Whale/Whale 9.png.import b/Project/Textures/Whale/Whale 9.png.import
deleted file mode 100644
index 365bdd1..0000000
--- a/Project/Textures/Whale/Whale 9.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://csmh12c3ird1w"
-path="res://.godot/imported/Whale 9.png-bab59ae2cd6b045102f231e4980d6aa8.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://Textures/Whale/Whale 9.png"
-dest_files=["res://.godot/imported/Whale 9.png-bab59ae2cd6b045102f231e4980d6aa8.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/Project/export_presets.cfg b/Project/export_presets.cfg
deleted file mode 100644
index 5d24010..0000000
--- a/Project/export_presets.cfg
+++ /dev/null
@@ -1,146 +0,0 @@
-[preset.0]
-
-name="Web"
-platform="Web"
-runnable=true
-advanced_options=false
-dedicated_server=false
-custom_features=""
-export_filter="all_resources"
-include_filter=""
-exclude_filter=""
-export_path="../../HTML/index.html"
-encryption_include_filters=""
-encryption_exclude_filters=""
-encrypt_pck=false
-encrypt_directory=false
-script_export_mode=2
-
-[preset.0.options]
-
-custom_template/debug=""
-custom_template/release=""
-variant/extensions_support=false
-variant/thread_support=false
-vram_texture_compression/for_desktop=true
-vram_texture_compression/for_mobile=false
-html/export_icon=true
-html/custom_html_shell=""
-html/head_include=""
-html/canvas_resize_policy=2
-html/focus_canvas_on_start=true
-html/experimental_virtual_keyboard=false
-progressive_web_app/enabled=false
-progressive_web_app/ensure_cross_origin_isolation_headers=true
-progressive_web_app/offline_page=""
-progressive_web_app/display=1
-progressive_web_app/orientation=1
-progressive_web_app/icon_144x144=""
-progressive_web_app/icon_180x180=""
-progressive_web_app/icon_512x512=""
-progressive_web_app/background_color=Color(0, 0, 0, 1)
-
-[preset.1]
-
-name="Linux"
-platform="Linux"
-runnable=true
-advanced_options=false
-dedicated_server=false
-custom_features=""
-export_filter="all_resources"
-include_filter=""
-exclude_filter=""
-export_path="../../Linux/Exosphere Caliber.x86_64"
-encryption_include_filters=""
-encryption_exclude_filters=""
-encrypt_pck=false
-encrypt_directory=false
-script_export_mode=2
-
-[preset.1.options]
-
-custom_template/debug=""
-custom_template/release=""
-debug/export_console_wrapper=1
-binary_format/embed_pck=false
-texture_format/s3tc_bptc=true
-texture_format/etc2_astc=false
-binary_format/architecture="x86_64"
-ssh_remote_deploy/enabled=false
-ssh_remote_deploy/host="user@host_ip"
-ssh_remote_deploy/port="22"
-ssh_remote_deploy/extra_args_ssh=""
-ssh_remote_deploy/extra_args_scp=""
-ssh_remote_deploy/run_script="#!/usr/bin/env bash
-export DISPLAY=:0
-unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
-\"{temp_dir}/{exe_name}\" {cmd_args}"
-ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
-kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
-rm -rf \"{temp_dir}\""
-
-[preset.2]
-
-name="Windows Desktop"
-platform="Windows Desktop"
-runnable=true
-advanced_options=false
-dedicated_server=false
-custom_features=""
-export_filter="all_resources"
-include_filter=""
-exclude_filter=""
-export_path="../../Windows/Exosphere Caliber.exe"
-encryption_include_filters=""
-encryption_exclude_filters=""
-encrypt_pck=false
-encrypt_directory=false
-script_export_mode=2
-
-[preset.2.options]
-
-custom_template/debug=""
-custom_template/release=""
-debug/export_console_wrapper=1
-binary_format/embed_pck=false
-texture_format/s3tc_bptc=true
-texture_format/etc2_astc=false
-binary_format/architecture="x86_64"
-codesign/enable=false
-codesign/timestamp=true
-codesign/timestamp_server_url=""
-codesign/digest_algorithm=1
-codesign/description=""
-codesign/custom_options=PackedStringArray()
-application/modify_resources=true
-application/icon=""
-application/console_wrapper_icon=""
-application/icon_interpolation=4
-application/file_version=""
-application/product_version=""
-application/company_name=""
-application/product_name=""
-application/file_description=""
-application/copyright=""
-application/trademarks=""
-application/export_angle=0
-application/export_d3d12=0
-application/d3d12_agility_sdk_multiarch=true
-ssh_remote_deploy/enabled=false
-ssh_remote_deploy/host="user@host_ip"
-ssh_remote_deploy/port="22"
-ssh_remote_deploy/extra_args_ssh=""
-ssh_remote_deploy/extra_args_scp=""
-ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
-$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
-$trigger = New-ScheduledTaskTrigger -Once -At 00:00
-$settings = New-ScheduledTaskSettingsSet
-$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
-Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
-Start-ScheduledTask -TaskName godot_remote_debug
-while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
-Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
-ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
-Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
-Remove-Item -Recurse -Force '{temp_dir}'"
diff --git a/Project/icon.png.import b/Project/icon.png.import
deleted file mode 100644
index 6f37644..0000000
--- a/Project/icon.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dsur7nxbtpbg3"
-path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://icon.png"
-dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..115cfe8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# template
+
+yeah
diff --git a/SConstruct b/SConstruct
new file mode 100644
index 0000000..90b874a
--- /dev/null
+++ b/SConstruct
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+import os
+import sys
+
+env = SConscript("godot-cpp/SConstruct")
+
+# For reference:
+# - CCFLAGS are compilation flags shared between C and C++
+# - CFLAGS are for C-specific compilation flags
+# - CXXFLAGS are for C++-specific compilation flags
+# - CPPFLAGS are for pre-processor flags
+# - CPPDEFINES are for pre-processor defines
+# - LINKFLAGS are for linking flags
+
+# tweak this if you want to use different folders, or more folders, to store your source code in.
+env.Append(CPPPATH=["src/"])
+sources = Glob("src/*.cpp")
+
+try:
+ Documentation = env.GodotCPPDocData("src/gen/doc_data.gen.cpp", source=Glob("docs/*.xml"))
+ sources.append(Documentation)
+except AttributeError:
+ print("Dear friends! Make sure to have Godot Engine be 4.4 or higher for integrated documentation!")
+
+Default(env.SharedLibrary("demo/bin/SideScrollingShooter{}{}".format(env["suffix"], env["SHLIBSUFFIX"]),source=sources,))
diff --git a/demo/bin/SideScrollingShooter.gdextension b/demo/bin/SideScrollingShooter.gdextension
new file mode 100644
index 0000000..8694b88
--- /dev/null
+++ b/demo/bin/SideScrollingShooter.gdextension
@@ -0,0 +1,34 @@
+[configuration]
+
+entry_symbol = "LibraryInit"
+compatibility_minimum = "4.2"
+reloadable = true
+
+[libraries]
+
+macos.debug = "res://bin/libSideScrollingShooter.macos.template_debug.framework"
+macos.release = "res://bin/libSideScrollingShooter.macos.template_release.framework"
+ios.debug = "res://bin/libSideScrollingShooter.ios.template_debug.xcframework"
+ios.release = "res://bin/libSideScrollingShooter.ios.template_release.xcframework"
+windows.debug.x86_32 = "res://bin/libSideScrollingShooter.windows.template_debug.x86_32.dll"
+windows.release.x86_32 = "res://bin/libSideScrollingShooter.windows.template_release.x86_32.dll"
+windows.debug.x86_64 = "res://bin/libSideScrollingShooter.windows.template_debug.x86_64.dll"
+windows.release.x86_64 = "res://bin/libSideScrollingShooter.windows.template_release.x86_64.dll"
+linux.debug.x86_64 = "res://bin/libSideScrollingShooter.linux.template_debug.x86_64.so"
+linux.release.x86_64 = "res://bin/libSideScrollingShooter.linux.template_release.x86_64.so"
+linux.debug.arm64 = "res://bin/libSideScrollingShooter.linux.template_debug.arm64.so"
+linux.release.arm64 = "res://bin/libSideScrollingShooter.linux.template_release.arm64.so"
+linux.debug.rv64 = "res://bin/libSideScrollingShooter.linux.template_debug.rv64.so"
+linux.release.rv64 = "res://bin/libSideScrollingShooter.linux.template_release.rv64.so"
+android.debug.x86_64 = "res://bin/libSideScrollingShooter.android.template_debug.x86_64.so"
+android.release.x86_64 = "res://bin/libSideScrollingShooter.android.template_release.x86_64.so"
+android.debug.arm64 = "res://bin/libSideScrollingShooter.android.template_debug.arm64.so"
+android.release.arm64 = "res://bin/libSideScrollingShooter.android.template_release.arm64.so"
+
+[dependencies]
+ios.debug = {
+ "res://bin/libgodot-cpp.ios.template_debug.xcframework": ""
+}
+ios.release = {
+ "res://bin/libgodot-cpp.ios.template_release.xcframework": ""
+}
diff --git a/demo/bin/SideScrollingShooter.gdextension.uid b/demo/bin/SideScrollingShooter.gdextension.uid
new file mode 100644
index 0000000..7ca08f5
--- /dev/null
+++ b/demo/bin/SideScrollingShooter.gdextension.uid
@@ -0,0 +1 @@
+uid://d2acjapvkngkl
diff --git a/demo/bin/libSideScrollingShooter.linux.template_debug.x86_64.so b/demo/bin/libSideScrollingShooter.linux.template_debug.x86_64.so
new file mode 100755
index 0000000..8be04ff
Binary files /dev/null and b/demo/bin/libSideScrollingShooter.linux.template_debug.x86_64.so differ
diff --git a/Project/default_bus_layout.tres b/demo/default_bus_layout.tres
similarity index 100%
rename from Project/default_bus_layout.tres
rename to demo/default_bus_layout.tres
diff --git a/Project/Scenes/Level 01.tscn b/demo/godot/Scenes/Level 01.tscn
similarity index 67%
rename from Project/Scenes/Level 01.tscn
rename to demo/godot/Scenes/Level 01.tscn
index 40b505f..f8d541f 100644
--- a/Project/Scenes/Level 01.tscn
+++ b/demo/godot/Scenes/Level 01.tscn
@@ -1,16 +1,13 @@
-[gd_scene load_steps=17 format=3 uid="uid://sukfq8clv4s0"]
+[gd_scene load_steps=15 format=3 uid="uid://sukfq8clv4s0"]
-[ext_resource type="Texture2D" uid="uid://xlfmu7wr8mhb" path="res://Textures/Level01/Sky2.png" id="1_4a42c"]
-[ext_resource type="Texture2D" uid="uid://88sgqxmugeto" path="res://Textures/Level01/Sky1.png" id="2_vchpd"]
-[ext_resource type="Texture2D" uid="uid://w527cw3q2qhm" path="res://Textures/Level01/Sky3.png" id="3_2h5vj"]
-[ext_resource type="PackedScene" uid="uid://b6gjwbfujf38y" path="res://Scenes/heads_up_display.tscn" id="4_fiy6t"]
-[ext_resource type="PackedScene" uid="uid://bjbccem28ir8r" path="res://Scenes/player.tscn" id="5_dh16x"]
-[ext_resource type="PackedScene" uid="uid://dguvnd4wmo35j" path="res://Scenes/enemy_waves.tscn" id="6_7y0em"]
-[ext_resource type="PackedScene" uid="uid://baqm758lyy4o3" path="res://Scenes/Waves/Level 01/sample_shooting.tscn" id="7_4pyr6"]
-[ext_resource type="PackedScene" uid="uid://bkm7p6iqiqm21" path="res://Scenes/Waves/Level 01/sample.tscn" id="7_gs225"]
-[ext_resource type="PackedScene" uid="uid://b8vxsep2lvw3a" path="res://Scenes/Waves/begin.tscn" id="8_3hfxd"]
-[ext_resource type="PackedScene" uid="uid://bd0ehge1veq56" path="res://Scenes/Waves/end.tscn" id="9_a1qi8"]
-[ext_resource type="PackedScene" uid="uid://dyqnmrhflct7u" path="res://Scenes/Waves/Level 01/sample_behind.tscn" id="9_ggr54"]
+[ext_resource type="Texture2D" uid="uid://xlfmu7wr8mhb" path="res://non-godot/Textures/Level01/Sky2.png" id="1_wriy3"]
+[ext_resource type="Texture2D" uid="uid://88sgqxmugeto" path="res://non-godot/Textures/Level01/Sky1.png" id="2_4tvsp"]
+[ext_resource type="Texture2D" uid="uid://w527cw3q2qhm" path="res://non-godot/Textures/Level01/Sky3.png" id="3_e6nsj"]
+[ext_resource type="PackedScene" uid="uid://b6gjwbfujf38y" path="res://godot/Scenes/heads_up_display.tscn" id="4_btphg"]
+[ext_resource type="PackedScene" uid="uid://bjbccem28ir8r" path="res://godot/Scenes/player.tscn" id="5_6t24y"]
+[ext_resource type="PackedScene" uid="uid://bkm7p6iqiqm21" path="res://godot/Scenes/Waves/sample.tscn" id="6_lxu8r"]
+[ext_resource type="PackedScene" uid="uid://dyqnmrhflct7u" path="res://godot/Scenes/Waves/sample_behind.tscn" id="7_8amlk"]
+[ext_resource type="PackedScene" uid="uid://baqm758lyy4o3" path="res://godot/Scenes/Waves/sample_shooting.tscn" id="8_2w03r"]
[sub_resource type="Gradient" id="Gradient_ay0jx"]
colors = PackedColorArray(0, 0.172549, 1, 1, 0, 0.623529, 1, 1)
@@ -65,6 +62,8 @@ gravity = Vector3(0, 0, 0)
scale_min = 0.3
scale_max = 1.1
+[sub_resource type="PackedScene" id="PackedScene_wriy3"]
+
[node name="Level 01" type="Node2D"]
[node name="Background" type="Node2D" parent="."]
@@ -77,41 +76,41 @@ texture = SubResource("GradientTexture2D_1gw3d")
[node name="SlowestClouds" type="GPUParticles2D" parent="Background"]
position = Vector2(1800, 360)
amount = 40
-process_material = SubResource("ParticleProcessMaterial_ctueq")
-texture = ExtResource("1_4a42c")
+texture = ExtResource("1_wriy3")
lifetime = 480.0
preprocess = 120.0
visibility_rect = Rect2(-2000, -2000, 4000, 4000)
+process_material = SubResource("ParticleProcessMaterial_ctueq")
[node name="SlowClouds" type="GPUParticles2D" parent="Background"]
position = Vector2(1800, 360)
amount = 20
-process_material = SubResource("ParticleProcessMaterial_dvhti")
-texture = ExtResource("2_vchpd")
+texture = ExtResource("2_4tvsp")
lifetime = 120.0
preprocess = 40.0
visibility_rect = Rect2(-2000, -2000, 4000, 4000)
+process_material = SubResource("ParticleProcessMaterial_dvhti")
[node name="FastClouds" type="GPUParticles2D" parent="Background"]
position = Vector2(1800, 360)
amount = 40
-process_material = SubResource("ParticleProcessMaterial_4312q")
-texture = ExtResource("3_2h5vj")
+texture = ExtResource("3_e6nsj")
lifetime = 40.0
preprocess = 10.0
visibility_rect = Rect2(-2000, -2000, 4000, 4000)
+process_material = SubResource("ParticleProcessMaterial_4312q")
-[node name="HeadsUpDisplay" parent="." instance=ExtResource("4_fiy6t")]
+[node name="HeadsUpDisplay" parent="." instance=ExtResource("4_btphg")]
-[node name="Player" parent="." instance=ExtResource("5_dh16x")]
+[node name="Player" parent="." instance=ExtResource("5_6t24y")]
position = Vector2(157, 279)
slide_on_ceiling = false
-[node name="EnemyWaves" parent="." instance=ExtResource("6_7y0em")]
-WaveWaits = Array[float]([0.0, 7.0, 4.0])
-WaveScenes = Array[PackedScene]([ExtResource("7_4pyr6"), ExtResource("7_gs225"), ExtResource("9_ggr54")])
-BeginningFade = ExtResource("8_3hfxd")
-EndingFadeTime = 5.0
-EndingFade = ExtResource("9_a1qi8")
+[node name="WaveSystem" type="WaveSystem" parent="."]
+TimeTilWave = Array[float]([0.0, 3.0, 3.0, 3.0])
+WaveScenes = Array[PackedScene]([ExtResource("6_lxu8r"), ExtResource("7_8amlk"), ExtResource("8_2w03r"), SubResource("PackedScene_wriy3")])
+FadeAtBeginning = true
+FadeAtEnd = true
+FadeTime = 3
-[connection signal="PlayerTookDamage" from="Player" to="HeadsUpDisplay" method="_on_player_player_took_damage"]
+[connection signal="WavesFinished" from="WaveSystem" to="HeadsUpDisplay" method="_on_wave_system_waves_finished"]
diff --git a/demo/godot/Scenes/Waves/sample.tscn b/demo/godot/Scenes/Waves/sample.tscn
new file mode 100644
index 0000000..0f79ed7
--- /dev/null
+++ b/demo/godot/Scenes/Waves/sample.tscn
@@ -0,0 +1,150 @@
+[gd_scene load_steps=14 format=3 uid="uid://bkm7p6iqiqm21"]
+
+[ext_resource type="Script" uid="uid://daypvkutwalb6" path="res://godot/Scripts/global.gd" id="1_al7rx"]
+[ext_resource type="Texture2D" uid="uid://blrbc8mp71nub" path="res://non-godot/Textures/Route/Route 1.png" id="1_ful3w"]
+[ext_resource type="Texture2D" uid="uid://cphw4low4de4b" path="res://non-godot/Textures/Route/Route 2.png" id="2_6pqd8"]
+[ext_resource type="Texture2D" uid="uid://dwdn12rkkr1uo" path="res://non-godot/Textures/Route/Route 3.png" id="3_xar5r"]
+[ext_resource type="Texture2D" uid="uid://bbupn4br1fog7" path="res://non-godot/Textures/Route/Route 4.png" id="4_yv5ct"]
+[ext_resource type="Texture2D" uid="uid://tfbp816emics" path="res://non-godot/Textures/Route/Route 5.png" id="5_pn3s6"]
+[ext_resource type="Texture2D" uid="uid://cl0sil1psnxs1" path="res://non-godot/Textures/Route/Route 6.png" id="6_2n8s3"]
+[ext_resource type="Texture2D" uid="uid://cgv78fuua01eg" path="res://non-godot/Textures/Route/Route 7.png" id="7_4mrdp"]
+[ext_resource type="Texture2D" uid="uid://y2e4mmb2u3h5" path="res://non-godot/Textures/Route/Route 8.png" id="8_ytiof"]
+[ext_resource type="Texture2D" uid="uid://cfonr11og4um" path="res://non-godot/Textures/Route/Route 9.png" id="9_156qa"]
+[ext_resource type="Texture2D" uid="uid://dtgyeeu1t0n7h" path="res://non-godot/Textures/Route/Route 10.png" id="10_b8exe"]
+[ext_resource type="Texture2D" uid="uid://b1xcgdrf6sdbp" path="res://non-godot/Textures/Route/Route 11.png" id="11_nbrof"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_4uncb"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_ful3w")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_6pqd8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_xar5r")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_yv5ct")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_pn3s6")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_2n8s3")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_4mrdp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_ytiof")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_156qa")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_b8exe")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_nbrof")
+}],
+"loop": true,
+"name": &"default",
+"speed": 22.0
+}]
+
+[node name="SampleNoAnim" type="Node2D"]
+script = ExtResource("1_al7rx")
+
+[node name="Enemy" type="Enemy" parent="."]
+Speed = 400
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1358, 350)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy2" type="Enemy" parent="."]
+Speed = 400
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1394, 242)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy3" type="Enemy" parent="."]
+Speed = 400
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1388, 441)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy4" type="Enemy" parent="."]
+Speed = 200
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1425, 533)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy5" type="Enemy" parent="."]
+Speed = 200
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1460, 625)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy6" type="Enemy" parent="."]
+Speed = 200
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1436, 148)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy7" type="Enemy" parent="."]
+Speed = 200
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(1480, 56)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[connection signal="AddScore" from="Enemy" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy2" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy3" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy4" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy5" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy6" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy7" to="." method="add_score"]
diff --git a/demo/godot/Scenes/Waves/sample_behind.tscn b/demo/godot/Scenes/Waves/sample_behind.tscn
new file mode 100644
index 0000000..c580cc7
--- /dev/null
+++ b/demo/godot/Scenes/Waves/sample_behind.tscn
@@ -0,0 +1,146 @@
+[gd_scene load_steps=25 format=3 uid="uid://dyqnmrhflct7u"]
+
+[ext_resource type="Texture2D" uid="uid://blrbc8mp71nub" path="res://non-godot/Textures/Route/Route 1.png" id="1_6eg7d"]
+[ext_resource type="Script" uid="uid://daypvkutwalb6" path="res://godot/Scripts/global.gd" id="1_xdgt1"]
+[ext_resource type="Texture2D" uid="uid://cphw4low4de4b" path="res://non-godot/Textures/Route/Route 2.png" id="2_exbxn"]
+[ext_resource type="Texture2D" uid="uid://dwdn12rkkr1uo" path="res://non-godot/Textures/Route/Route 3.png" id="3_vtm4k"]
+[ext_resource type="Texture2D" uid="uid://bbupn4br1fog7" path="res://non-godot/Textures/Route/Route 4.png" id="4_m22mt"]
+[ext_resource type="Texture2D" uid="uid://tfbp816emics" path="res://non-godot/Textures/Route/Route 5.png" id="5_ml5ou"]
+[ext_resource type="Texture2D" uid="uid://cl0sil1psnxs1" path="res://non-godot/Textures/Route/Route 6.png" id="6_clcjf"]
+[ext_resource type="Texture2D" uid="uid://cgv78fuua01eg" path="res://non-godot/Textures/Route/Route 7.png" id="7_lysxw"]
+[ext_resource type="Texture2D" uid="uid://y2e4mmb2u3h5" path="res://non-godot/Textures/Route/Route 8.png" id="8_3c5ph"]
+[ext_resource type="Texture2D" uid="uid://cfonr11og4um" path="res://non-godot/Textures/Route/Route 9.png" id="9_wc718"]
+[ext_resource type="Texture2D" uid="uid://dtgyeeu1t0n7h" path="res://non-godot/Textures/Route/Route 10.png" id="10_ej5r0"]
+[ext_resource type="Texture2D" uid="uid://b1xcgdrf6sdbp" path="res://non-godot/Textures/Route/Route 11.png" id="11_rpkfw"]
+[ext_resource type="Texture2D" uid="uid://b2res51c25avx" path="res://non-godot/Textures/Whale/Whale 1.png" id="12_ej5r0"]
+[ext_resource type="Texture2D" uid="uid://s3ici4urgkpp" path="res://non-godot/Textures/Whale/Whale 2.png" id="13_rpkfw"]
+[ext_resource type="Texture2D" uid="uid://xvmxbxost161" path="res://non-godot/Textures/Whale/Whale 3.png" id="14_8bhru"]
+[ext_resource type="Texture2D" uid="uid://d13ht078u72ob" path="res://non-godot/Textures/Whale/Whale 4.png" id="15_xkueu"]
+[ext_resource type="Texture2D" uid="uid://dmdonnxkc6q5y" path="res://non-godot/Textures/Whale/Whale 5.png" id="16_sgqsj"]
+[ext_resource type="Texture2D" uid="uid://mk3erlmynh73" path="res://non-godot/Textures/Whale/Whale 6.png" id="17_8if51"]
+[ext_resource type="Texture2D" uid="uid://dqlcy084umvmy" path="res://non-godot/Textures/Whale/Whale 7.png" id="18_kqggs"]
+[ext_resource type="Texture2D" uid="uid://bkiv5st0na5lf" path="res://non-godot/Textures/Whale/Whale 8.png" id="19_hty31"]
+[ext_resource type="Texture2D" uid="uid://csmh12c3ird1w" path="res://non-godot/Textures/Whale/Whale 9.png" id="20_7alpc"]
+[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://non-godot/Textures/Bullet.png" id="21_wj37f"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_4uncb"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_6eg7d")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_exbxn")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_vtm4k")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_m22mt")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_ml5ou")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_clcjf")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_lysxw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_3c5ph")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_wc718")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_ej5r0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("11_rpkfw")
+}],
+"loop": true,
+"name": &"default",
+"speed": 22.0
+}]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_t7ivn"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("12_ej5r0")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_rpkfw")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_8bhru")
+}, {
+"duration": 1.0,
+"texture": ExtResource("15_xkueu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("16_sgqsj")
+}, {
+"duration": 1.0,
+"texture": ExtResource("17_8if51")
+}, {
+"duration": 1.0,
+"texture": ExtResource("18_kqggs")
+}, {
+"duration": 1.0,
+"texture": ExtResource("19_hty31")
+}, {
+"duration": 1.0,
+"texture": ExtResource("20_7alpc")
+}],
+"loop": true,
+"name": &"default",
+"speed": 10.0
+}]
+
+[node name="SampleBehind" type="Node2D"]
+script = ExtResource("1_xdgt1")
+
+[node name="Enemy" type="Enemy" parent="."]
+Direction = Vector2(1, 0)
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(-74, 175)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="Enemy2" type="Enemy" parent="."]
+Direction = Vector2(1, 0)
+Frames = SubResource("SpriteFrames_4uncb")
+position = Vector2(-79, 266)
+collision_layer = 3
+collision_mask = 3
+mass = 50.0
+gravity_scale = 0.0
+lock_rotation = true
+custom_integrator = true
+max_contacts_reported = 1
+
+[node name="ShootingEnemy" type="Enemy" parent="."]
+Direction = Vector2(1, 0)
+Frames = SubResource("SpriteFrames_t7ivn")
+ShotIsShooting = true
+ShotBulletLocation = Vector2(100, 0)
+ShotBulletDirection = Vector2(1, 0)
+ShotBulletTexture = ExtResource("21_wj37f")
+position = Vector2(-173, 589)
+collision_layer = 3
+collision_mask = 3
+mass = 250.0
+gravity_scale = 0.0
+lock_rotation = true
+max_contacts_reported = 1
+
+[connection signal="AddScore" from="Enemy" to="." method="add_score"]
+[connection signal="AddScore" from="Enemy2" to="." method="add_score"]
+[connection signal="AddScore" from="ShootingEnemy" to="." method="add_score"]
diff --git a/demo/godot/Scenes/Waves/sample_shooting.tscn b/demo/godot/Scenes/Waves/sample_shooting.tscn
new file mode 100644
index 0000000..93f6bba
--- /dev/null
+++ b/demo/godot/Scenes/Waves/sample_shooting.tscn
@@ -0,0 +1,94 @@
+[gd_scene load_steps=13 format=3 uid="uid://baqm758lyy4o3"]
+
+[ext_resource type="Texture2D" uid="uid://b2res51c25avx" path="res://non-godot/Textures/Whale/Whale 1.png" id="1_n42m5"]
+[ext_resource type="Script" uid="uid://daypvkutwalb6" path="res://godot/Scripts/global.gd" id="1_tqaef"]
+[ext_resource type="Texture2D" uid="uid://s3ici4urgkpp" path="res://non-godot/Textures/Whale/Whale 2.png" id="2_watmu"]
+[ext_resource type="Texture2D" uid="uid://xvmxbxost161" path="res://non-godot/Textures/Whale/Whale 3.png" id="3_wr261"]
+[ext_resource type="Texture2D" uid="uid://d13ht078u72ob" path="res://non-godot/Textures/Whale/Whale 4.png" id="4_meaxa"]
+[ext_resource type="Texture2D" uid="uid://dmdonnxkc6q5y" path="res://non-godot/Textures/Whale/Whale 5.png" id="5_cad6x"]
+[ext_resource type="Texture2D" uid="uid://mk3erlmynh73" path="res://non-godot/Textures/Whale/Whale 6.png" id="6_l83an"]
+[ext_resource type="Texture2D" uid="uid://dqlcy084umvmy" path="res://non-godot/Textures/Whale/Whale 7.png" id="7_k7hp4"]
+[ext_resource type="Texture2D" uid="uid://bkiv5st0na5lf" path="res://non-godot/Textures/Whale/Whale 8.png" id="8_b25ut"]
+[ext_resource type="Texture2D" uid="uid://csmh12c3ird1w" path="res://non-godot/Textures/Whale/Whale 9.png" id="9_uafrk"]
+[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://non-godot/Textures/Bullet.png" id="10_n52gx"]
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_t7ivn"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_n42m5")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_watmu")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_wr261")
+}, {
+"duration": 1.0,
+"texture": ExtResource("4_meaxa")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_cad6x")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_l83an")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_k7hp4")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_b25ut")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_uafrk")
+}],
+"loop": true,
+"name": &"default",
+"speed": 10.0
+}]
+
+[node name="SampleNoAnimShooting" type="Node2D"]
+script = ExtResource("1_tqaef")
+
+[node name="ShootingEnemy" type="Enemy" parent="."]
+Frames = SubResource("SpriteFrames_t7ivn")
+ShotIsShooting = true
+ShotBulletLocation = Vector2(-100, 0)
+ShotBulletTexture = ExtResource("10_n52gx")
+position = Vector2(1394, 83)
+collision_layer = 3
+collision_mask = 3
+mass = 250.0
+gravity_scale = 0.0
+lock_rotation = true
+max_contacts_reported = 1
+
+[node name="ShootingEnemy2" type="Enemy" parent="."]
+Frames = SubResource("SpriteFrames_t7ivn")
+ShotIsShooting = true
+ShotBulletLocation = Vector2(-100, 0)
+ShotBulletTexture = ExtResource("10_n52gx")
+position = Vector2(1391, 212)
+collision_layer = 3
+collision_mask = 3
+mass = 250.0
+gravity_scale = 0.0
+lock_rotation = true
+max_contacts_reported = 1
+
+[node name="ShootingEnemy3" type="Enemy" parent="."]
+Frames = SubResource("SpriteFrames_t7ivn")
+ShotIsShooting = true
+ShotBulletLocation = Vector2(-100, 0)
+ShotBulletTexture = ExtResource("10_n52gx")
+position = Vector2(1386, 342)
+collision_layer = 3
+collision_mask = 3
+mass = 250.0
+gravity_scale = 0.0
+lock_rotation = true
+max_contacts_reported = 1
+
+[connection signal="AddScore" from="ShootingEnemy" to="." method="add_score"]
+[connection signal="AddScore" from="ShootingEnemy2" to="." method="add_score"]
+[connection signal="AddScore" from="ShootingEnemy3" to="." method="add_score"]
diff --git a/Project/Scenes/heads_up_display.tscn b/demo/godot/Scenes/heads_up_display.tscn
similarity index 93%
rename from Project/Scenes/heads_up_display.tscn
rename to demo/godot/Scenes/heads_up_display.tscn
index 508be54..4864e52 100644
--- a/Project/Scenes/heads_up_display.tscn
+++ b/demo/godot/Scenes/heads_up_display.tscn
@@ -1,8 +1,8 @@
[gd_scene load_steps=9 format=3 uid="uid://b6gjwbfujf38y"]
-[ext_resource type="Script" path="res://Scripts/heads_up_display.gd" id="1_u3slv"]
-[ext_resource type="Texture2D" uid="uid://8s5wyy4abpnr" path="res://Textures/Hud.png" id="2_m85kq"]
-[ext_resource type="Texture2D" uid="uid://cunprfaqhrw10" path="res://Textures/Hudfill.png" id="4_bo16e"]
+[ext_resource type="Script" uid="uid://cn8b5xk7ngeet" path="res://godot/Scripts/heads_up_display.gd" id="1_u3slv"]
+[ext_resource type="Texture2D" uid="uid://8s5wyy4abpnr" path="res://non-godot/Textures/Hud.png" id="2_m85kq"]
+[ext_resource type="Texture2D" uid="uid://cunprfaqhrw10" path="res://non-godot/Textures/Hudfill.png" id="4_bo16e"]
[sub_resource type="LabelSettings" id="LabelSettings_kfuc0"]
font_size = 30
diff --git a/demo/godot/Scenes/player.tscn b/demo/godot/Scenes/player.tscn
new file mode 100644
index 0000000..44e60d2
--- /dev/null
+++ b/demo/godot/Scenes/player.tscn
@@ -0,0 +1,47 @@
+[gd_scene load_steps=6 format=3 uid="uid://bjbccem28ir8r"]
+
+[ext_resource type="Texture2D" uid="uid://bcbjh2amre7ke" path="res://non-godot/Textures/Plane/PlaneUp.png" id="1_2h3i0"]
+[ext_resource type="Texture2D" uid="uid://d07qtvmhqjjts" path="res://non-godot/Textures/Bullet.png" id="1_ppa05"]
+[ext_resource type="Texture2D" uid="uid://c5kt81t5h4vgn" path="res://non-godot/Textures/Plane/Plane.png" id="3_5g2vf"]
+[ext_resource type="Texture2D" uid="uid://bff4pkabs2ecf" path="res://non-godot/Textures/Plane/PlaneDown.png" id="3_edjcf"]
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_xtmdc"]
+particle_flag_disable_z = true
+emission_shape = 3
+emission_box_extents = Vector3(0, 16, 1)
+direction = Vector3(-1, 0, 0)
+spread = 0.0
+initial_velocity_min = 3000.0
+initial_velocity_max = 3000.0
+gravity = Vector3(0, 0, 0)
+scale_max = 8.0
+color = Color(0.513233, 0.513233, 0.513233, 1)
+
+[node name="Player" type="Player" groups=["Player"]]
+ShotBulletLocation = Vector2(95, 45)
+ShotBulletTexture = ExtResource("1_ppa05")
+PlayerUp = ExtResource("1_2h3i0")
+PlayerNeutral = ExtResource("3_5g2vf")
+PlayerDown = ExtResource("3_edjcf")
+InputLeft = &"Left"
+InputUp = &"Up"
+InputRight = &"Right"
+InputDown = &"Down"
+InputShoot = &"Shoot"
+InputSpeedUp = &"SpeedUp"
+motion_mode = 1
+
+[node name="GPUParticles2D2" type="GPUParticles2D" parent="."]
+z_index = -1
+position = Vector2(-82, -21)
+amount = 500
+amount_ratio = 0.66
+lifetime = 5.0
+process_material = SubResource("ParticleProcessMaterial_xtmdc")
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+position = Vector2(-95, -15)
+amount = 500
+amount_ratio = 0.66
+lifetime = 5.0
+process_material = SubResource("ParticleProcessMaterial_xtmdc")
diff --git a/demo/godot/Scripts/global.gd b/demo/godot/Scripts/global.gd
new file mode 100644
index 0000000..5eaf2f4
--- /dev/null
+++ b/demo/godot/Scripts/global.gd
@@ -0,0 +1,6 @@
+extends Node
+
+var TotalScore: int = 0
+
+func add_score(GainedScore: int) -> void:
+ Global.TotalScore += GainedScore
diff --git a/demo/godot/Scripts/global.gd.uid b/demo/godot/Scripts/global.gd.uid
new file mode 100644
index 0000000..86d112b
--- /dev/null
+++ b/demo/godot/Scripts/global.gd.uid
@@ -0,0 +1 @@
+uid://daypvkutwalb6
diff --git a/Project/Scripts/heads_up_display.gd b/demo/godot/Scripts/heads_up_display.gd
similarity index 64%
rename from Project/Scripts/heads_up_display.gd
rename to demo/godot/Scripts/heads_up_display.gd
index 17af616..fba39c7 100644
--- a/Project/Scripts/heads_up_display.gd
+++ b/demo/godot/Scripts/heads_up_display.gd
@@ -1,9 +1,9 @@
extends Control
-
-# change the hud if the player takes damage
-func _on_player_player_took_damage(Health: int):
- match Health:
+func _process(_delta: float):
+ # Change hud elements
+ get_node("Container/Label").text = str(Global.TotalScore)
+ match get_parent().get_node("Player").GetHealth():
2:
get_node("Container/Sprite2D3").visible = false
1:
@@ -11,5 +11,5 @@ func _on_player_player_took_damage(Health: int):
0:
get_node("Container/Sprite2D").visible = false
-func _process(_delta: float):
- get_node("Container/Label").text = str(Global.TotalScore)
+func _on_wave_system_waves_finished() -> void:
+ print("We are done here.")
diff --git a/demo/godot/Scripts/heads_up_display.gd.uid b/demo/godot/Scripts/heads_up_display.gd.uid
new file mode 100644
index 0000000..5e6e8d2
--- /dev/null
+++ b/demo/godot/Scripts/heads_up_display.gd.uid
@@ -0,0 +1 @@
+uid://cn8b5xk7ngeet
diff --git a/Project/Sound/Explosion.ogg b/demo/non-godot/Sound/Explosion.ogg
similarity index 100%
rename from Project/Sound/Explosion.ogg
rename to demo/non-godot/Sound/Explosion.ogg
diff --git a/Project/Sound/HitHurt.ogg b/demo/non-godot/Sound/HitHurt.ogg
similarity index 100%
rename from Project/Sound/HitHurt.ogg
rename to demo/non-godot/Sound/HitHurt.ogg
diff --git a/Project/Sound/Shoot.ogg b/demo/non-godot/Sound/Shoot.ogg
similarity index 100%
rename from Project/Sound/Shoot.ogg
rename to demo/non-godot/Sound/Shoot.ogg
diff --git a/demo/non-godot/Textures/Bullet.png b/demo/non-godot/Textures/Bullet.png
new file mode 100644
index 0000000..272fc1a
Binary files /dev/null and b/demo/non-godot/Textures/Bullet.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 1.png b/demo/non-godot/Textures/Coin/Coin 1.png
new file mode 100644
index 0000000..cc5b34f
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 1.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 10.png b/demo/non-godot/Textures/Coin/Coin 10.png
new file mode 100644
index 0000000..73356eb
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 10.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 11.png b/demo/non-godot/Textures/Coin/Coin 11.png
new file mode 100644
index 0000000..617f732
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 11.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 12.png b/demo/non-godot/Textures/Coin/Coin 12.png
new file mode 100644
index 0000000..4386bce
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 12.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 13.png b/demo/non-godot/Textures/Coin/Coin 13.png
new file mode 100644
index 0000000..166559b
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 13.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 14.png b/demo/non-godot/Textures/Coin/Coin 14.png
new file mode 100644
index 0000000..8824c52
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 14.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 15.png b/demo/non-godot/Textures/Coin/Coin 15.png
new file mode 100644
index 0000000..a14a709
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 15.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 2.png b/demo/non-godot/Textures/Coin/Coin 2.png
new file mode 100644
index 0000000..b39be4d
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 2.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 3.png b/demo/non-godot/Textures/Coin/Coin 3.png
new file mode 100644
index 0000000..22064a9
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 3.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 4.png b/demo/non-godot/Textures/Coin/Coin 4.png
new file mode 100644
index 0000000..8dcf9e3
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 4.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 5.png b/demo/non-godot/Textures/Coin/Coin 5.png
new file mode 100644
index 0000000..1c4cac1
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 5.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 6.png b/demo/non-godot/Textures/Coin/Coin 6.png
new file mode 100644
index 0000000..0e8496f
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 6.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 7.png b/demo/non-godot/Textures/Coin/Coin 7.png
new file mode 100644
index 0000000..aba4007
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 7.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 8.png b/demo/non-godot/Textures/Coin/Coin 8.png
new file mode 100644
index 0000000..752dfab
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 8.png differ
diff --git a/demo/non-godot/Textures/Coin/Coin 9.png b/demo/non-godot/Textures/Coin/Coin 9.png
new file mode 100644
index 0000000..8436b4c
Binary files /dev/null and b/demo/non-godot/Textures/Coin/Coin 9.png differ
diff --git a/Project/Textures/Hud.png b/demo/non-godot/Textures/Hud.png
similarity index 100%
rename from Project/Textures/Hud.png
rename to demo/non-godot/Textures/Hud.png
diff --git a/Project/Textures/Hudfill.png b/demo/non-godot/Textures/Hudfill.png
similarity index 100%
rename from Project/Textures/Hudfill.png
rename to demo/non-godot/Textures/Hudfill.png
diff --git a/Project/Textures/Level01/Sky1.png b/demo/non-godot/Textures/Level01/Sky1.png
similarity index 100%
rename from Project/Textures/Level01/Sky1.png
rename to demo/non-godot/Textures/Level01/Sky1.png
diff --git a/demo/non-godot/Textures/Level01/Sky2.png b/demo/non-godot/Textures/Level01/Sky2.png
new file mode 100644
index 0000000..1676c72
Binary files /dev/null and b/demo/non-godot/Textures/Level01/Sky2.png differ
diff --git a/Project/Textures/Level01/Sky3.png b/demo/non-godot/Textures/Level01/Sky3.png
similarity index 100%
rename from Project/Textures/Level01/Sky3.png
rename to demo/non-godot/Textures/Level01/Sky3.png
diff --git a/demo/non-godot/Textures/Plane/Plane.png b/demo/non-godot/Textures/Plane/Plane.png
new file mode 100644
index 0000000..4e21523
Binary files /dev/null and b/demo/non-godot/Textures/Plane/Plane.png differ
diff --git a/demo/non-godot/Textures/Plane/PlaneDown.png b/demo/non-godot/Textures/Plane/PlaneDown.png
new file mode 100644
index 0000000..0b23b7b
Binary files /dev/null and b/demo/non-godot/Textures/Plane/PlaneDown.png differ
diff --git a/demo/non-godot/Textures/Plane/PlaneUp.png b/demo/non-godot/Textures/Plane/PlaneUp.png
new file mode 100644
index 0000000..f14c612
Binary files /dev/null and b/demo/non-godot/Textures/Plane/PlaneUp.png differ
diff --git a/demo/non-godot/Textures/Route/Route 1.png b/demo/non-godot/Textures/Route/Route 1.png
new file mode 100644
index 0000000..3846816
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 1.png differ
diff --git a/demo/non-godot/Textures/Route/Route 10.png b/demo/non-godot/Textures/Route/Route 10.png
new file mode 100644
index 0000000..9e59b7c
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 10.png differ
diff --git a/demo/non-godot/Textures/Route/Route 11.png b/demo/non-godot/Textures/Route/Route 11.png
new file mode 100644
index 0000000..3846816
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 11.png differ
diff --git a/demo/non-godot/Textures/Route/Route 2.png b/demo/non-godot/Textures/Route/Route 2.png
new file mode 100644
index 0000000..d05308b
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 2.png differ
diff --git a/demo/non-godot/Textures/Route/Route 3.png b/demo/non-godot/Textures/Route/Route 3.png
new file mode 100644
index 0000000..5c4e382
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 3.png differ
diff --git a/demo/non-godot/Textures/Route/Route 4.png b/demo/non-godot/Textures/Route/Route 4.png
new file mode 100644
index 0000000..9604a50
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 4.png differ
diff --git a/demo/non-godot/Textures/Route/Route 5.png b/demo/non-godot/Textures/Route/Route 5.png
new file mode 100644
index 0000000..0830013
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 5.png differ
diff --git a/demo/non-godot/Textures/Route/Route 6.png b/demo/non-godot/Textures/Route/Route 6.png
new file mode 100644
index 0000000..855ef81
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 6.png differ
diff --git a/demo/non-godot/Textures/Route/Route 7.png b/demo/non-godot/Textures/Route/Route 7.png
new file mode 100644
index 0000000..486be1a
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 7.png differ
diff --git a/demo/non-godot/Textures/Route/Route 8.png b/demo/non-godot/Textures/Route/Route 8.png
new file mode 100644
index 0000000..59238ba
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 8.png differ
diff --git a/demo/non-godot/Textures/Route/Route 9.png b/demo/non-godot/Textures/Route/Route 9.png
new file mode 100644
index 0000000..a3f5846
Binary files /dev/null and b/demo/non-godot/Textures/Route/Route 9.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 1.png b/demo/non-godot/Textures/Whale/Whale 1.png
new file mode 100644
index 0000000..449f187
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 1.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 2.png b/demo/non-godot/Textures/Whale/Whale 2.png
new file mode 100644
index 0000000..6616829
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 2.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 3.png b/demo/non-godot/Textures/Whale/Whale 3.png
new file mode 100644
index 0000000..a39f935
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 3.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 4.png b/demo/non-godot/Textures/Whale/Whale 4.png
new file mode 100644
index 0000000..bab2230
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 4.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 5.png b/demo/non-godot/Textures/Whale/Whale 5.png
new file mode 100644
index 0000000..9e7cfbb
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 5.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 6.png b/demo/non-godot/Textures/Whale/Whale 6.png
new file mode 100644
index 0000000..bd7abb1
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 6.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 7.png b/demo/non-godot/Textures/Whale/Whale 7.png
new file mode 100644
index 0000000..0a389f0
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 7.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 8.png b/demo/non-godot/Textures/Whale/Whale 8.png
new file mode 100644
index 0000000..252bccb
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 8.png differ
diff --git a/demo/non-godot/Textures/Whale/Whale 9.png b/demo/non-godot/Textures/Whale/Whale 9.png
new file mode 100644
index 0000000..659cdaa
Binary files /dev/null and b/demo/non-godot/Textures/Whale/Whale 9.png differ
diff --git a/Project/icon.png b/demo/non-godot/icon.png
similarity index 100%
rename from Project/icon.png
rename to demo/non-godot/icon.png
diff --git a/Project/project.godot b/demo/project.godot
similarity index 92%
rename from Project/project.godot
rename to demo/project.godot
index a2cfec2..3ed7508 100644
--- a/Project/project.godot
+++ b/demo/project.godot
@@ -10,16 +10,16 @@ config_version=5
[application]
-config/name="Side Scrolling Shooter Template"
+config/name="Demo: Side Scrolling Shooter"
config/description="Side scrolling shooter inspired by Earth Defense Force."
-run/main_scene="res://Scenes/Level 01.tscn"
-config/features=PackedStringArray("4.3", "Forward Plus")
+run/main_scene="res://godot/Scenes/Level 01.tscn"
+config/features=PackedStringArray("4.5", "Forward Plus")
boot_splash/bg_color=Color(0, 0, 0, 1)
-config/icon="res://icon.png"
+config/icon="res://non-godot/icon.png"
[autoload]
-Global="*res://Scripts/global.gd"
+Global="*res://godot/Scripts/global.gd"
[display]
diff --git a/docs/Bullet.xml b/docs/Bullet.xml
new file mode 100644
index 0000000..42a4a30
--- /dev/null
+++ b/docs/Bullet.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Enemy.xml b/docs/Enemy.xml
new file mode 100644
index 0000000..60ad257
--- /dev/null
+++ b/docs/Enemy.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/Player.xml b/docs/Player.xml
new file mode 100644
index 0000000..3c758a2
--- /dev/null
+++ b/docs/Player.xml
@@ -0,0 +1,19 @@
+
+
+
+ The main player character for the Side Scrolling Shooter.
+
+
+ The complete player character for all player functions.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/WaveSystem.xml b/docs/WaveSystem.xml
new file mode 100644
index 0000000..0fcde61
--- /dev/null
+++ b/docs/WaveSystem.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/godot-cpp b/godot-cpp
new file mode 160000
index 0000000..134e8b7
--- /dev/null
+++ b/godot-cpp
@@ -0,0 +1 @@
+Subproject commit 134e8b756def18edbdf9b0667462f82b1bcc57d0
diff --git a/src/Bullet.cpp b/src/Bullet.cpp
new file mode 100644
index 0000000..bfaac53
--- /dev/null
+++ b/src/Bullet.cpp
@@ -0,0 +1,85 @@
+#include "Bullet.hpp"
+
+#include
+#include
+#include
+#include
+
+namespace godot {
+ Bullet::Bullet() {
+ Sprite = memnew(Sprite2D);
+ Collision = memnew(CollisionShape2D);
+ CollisionShape = memnew(RectangleShape2D);
+
+ Collision->set_shape(CollisionShape);
+
+ set_lock_rotation_enabled(true);
+
+ add_child(Sprite);
+ add_child(Collision);
+
+ add_to_group("Bullet");
+ }
+
+ Bullet::~Bullet() {
+ queue_free();
+ }
+
+ void Bullet::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("GetSpeed"), &Bullet::GetSpeed);
+ ClassDB::bind_method(D_METHOD("SetSpeed", "Speed"), &Bullet::SetSpeed);
+ ClassDB::add_property("Bullet", PropertyInfo(Variant::INT, "Speed"), "SetSpeed", "GetSpeed");
+ ClassDB::bind_method(D_METHOD("GetDirection"), &Bullet::GetDirection);
+ ClassDB::bind_method(D_METHOD("SetDirection", "Direction"), &Bullet::SetDirection);
+ ClassDB::add_property("Bullet", PropertyInfo(Variant::VECTOR2, "Direction"), "SetDirection", "GetDirection");
+ ClassDB::bind_method(D_METHOD("GetTexture"), &Bullet::GetTexture);
+ ClassDB::bind_method(D_METHOD("SetTexture", "Texture"), &Bullet::SetTexture);
+ ClassDB::add_property("Bullet", PropertyInfo(Variant::OBJECT, "Texture"), "SetTexture", "GetTexture");
+ }
+
+ void Bullet::_integrate_forces(PhysicsDirectBodyState2D* state) {
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+ set_linear_velocity(Direction * Speed);
+ if (Sprite->get_rotation_degrees() > 90 && Sprite->get_rotation_degrees() <= 270) {
+ Sprite->set_flip_v(true);
+ } else {
+ Sprite->set_flip_v(false);
+ }
+ }
+
+ void Bullet::_physics_process(double delta) {
+ CollisionShape->set_size(Vector2(Texture->get_width(), Texture->get_height()));
+
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+ DespawnTimer += delta;
+ if (DespawnTimer >= DespawnTime) {
+ queue_free();
+ }
+ }
+
+ // Getters and setters
+ int Bullet::GetSpeed() const {
+ return Speed;
+ }
+ Vector2 Bullet::GetDirection() const {
+ return Direction;
+ }
+ Ref Bullet::GetTexture() const {
+ return Texture;
+ }
+
+ void Bullet::SetSpeed(const int speed) {
+ Speed = speed;
+ }
+ void Bullet::SetDirection(const Vector2 direction) {
+ Direction = direction;
+ }
+ void Bullet::SetTexture(const Ref& texture) {
+ Texture = texture;
+ Sprite->set_texture(texture);
+ }
+};
diff --git a/src/Bullet.hpp b/src/Bullet.hpp
new file mode 100644
index 0000000..a91fd5d
--- /dev/null
+++ b/src/Bullet.hpp
@@ -0,0 +1,48 @@
+#ifndef BULLET_HPP
+#define BULLET_HPP
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace godot {
+ class Bullet : public RigidBody2D {
+ GDCLASS(Bullet, RigidBody2D)
+
+ private:
+ int Speed = 1500;
+ Vector2 Direction;
+ Ref Texture;
+ double DespawnTime = 5;
+ double DespawnTimer = 0;
+
+ // Nodes
+ Sprite2D* Sprite;
+ CollisionShape2D* Collision;
+ RectangleShape2D* CollisionShape;
+
+ protected:
+ static void _bind_methods();
+
+ public:
+ Bullet();
+ ~Bullet();
+
+ void _integrate_forces(PhysicsDirectBodyState2D* state) override;
+ void _physics_process(double delta) override;
+
+ // Getters and setters
+ int GetSpeed() const;
+ Vector2 GetDirection() const;
+ Ref GetTexture() const;
+
+ void SetSpeed(const int speed);
+ void SetDirection(const Vector2 direction);
+ void SetTexture(const Ref& texture);
+ };
+};
+
+#endif
diff --git a/src/Enemy.cpp b/src/Enemy.cpp
new file mode 100644
index 0000000..85bc8ce
--- /dev/null
+++ b/src/Enemy.cpp
@@ -0,0 +1,193 @@
+#include "Enemy.hpp"
+#include "Player.hpp"
+
+#include
+#include
+#include
+#include
+
+namespace godot {
+ Enemy::Enemy() {
+ Sprite = memnew(AnimatedSprite2D);
+ Collision = memnew(CollisionShape2D);
+ CollisionShape = memnew(RectangleShape2D);
+
+ Collision->set_shape(CollisionShape);
+ SetFrames(memnew(SpriteFrames));
+ Sprite->set_autoplay("default");
+
+ add_child(Collision);
+ add_child(Sprite);
+
+ add_to_group("Enemy");
+ set_contact_monitor(true);
+ }
+
+ Enemy::~Enemy() {
+ queue_free();
+ }
+
+ void Enemy::_bind_methods() {
+ // Regular Vars
+ ClassDB::bind_method(D_METHOD("GetHealth"), &Enemy::GetHealth);
+ ClassDB::bind_method(D_METHOD("SetHealth", "Health"), &Enemy::SetHealth);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::INT, "Health"), "SetHealth", "GetHealth");
+ ClassDB::bind_method(D_METHOD("GetSpeed"), &Enemy::GetSpeed);
+ ClassDB::bind_method(D_METHOD("SetSpeed", "Speed"), &Enemy::SetSpeed);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::INT, "Speed"), "SetSpeed", "GetSpeed");
+ ClassDB::bind_method(D_METHOD("GetDirection"), &Enemy::GetDirection);
+ ClassDB::bind_method(D_METHOD("SetDirection", "Direction"), &Enemy::SetDirection);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::VECTOR2, "Direction"), "SetDirection", "GetDirection");
+ ClassDB::bind_method(D_METHOD("GetScoreAmount"), &Enemy::GetScoreAmount);
+ ClassDB::bind_method(D_METHOD("SetScoreAmount", "ScoreAmount"), &Enemy::SetScoreAmount);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::INT, "ScoreAmount"), "SetScoreAmount", "GetScoreAmount");
+ ClassDB::bind_method(D_METHOD("GetFrames"), &Enemy::GetFrames);
+ ClassDB::bind_method(D_METHOD("SetFrames", "Frames"), &Enemy::SetFrames);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::OBJECT, "Frames", PROPERTY_HINT_RESOURCE_TYPE, "SpriteFrames"), "SetFrames", "GetFrames");
+
+ // Shooting
+ ClassDB::add_property_group("Enemy", "Shooting", "Shot");
+ ClassDB::bind_method(D_METHOD("GetIsShooting"), &Enemy::GetIsShooting);
+ ClassDB::bind_method(D_METHOD("SetIsShooting", "IsShooting"), &Enemy::SetIsShooting);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::BOOL, "ShotIsShooting"), "SetIsShooting", "GetIsShooting");
+ ClassDB::bind_method(D_METHOD("GetFireRate"), &Enemy::GetFireRate);
+ ClassDB::bind_method(D_METHOD("SetFireRate", "FireRate"), &Enemy::SetFireRate);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::FLOAT, "ShotFireRate"), "SetFireRate", "GetFireRate");
+ ClassDB::bind_method(D_METHOD("GetBulletLocation"), &Enemy::GetBulletLocation);
+ ClassDB::bind_method(D_METHOD("SetBulletLocation", "BulletLocation"), &Enemy::SetBulletLocation);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::VECTOR2, "ShotBulletLocation"), "SetBulletLocation", "GetBulletLocation");
+ ClassDB::bind_method(D_METHOD("GetBulletDirection"), &Enemy::GetBulletDirection);
+ ClassDB::bind_method(D_METHOD("SetBulletDirection", "BulletDirection"), &Enemy::SetBulletDirection);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::VECTOR2, "ShotBulletDirection"), "SetBulletDirection", "GetBulletDirection");
+ ClassDB::bind_method(D_METHOD("GetBulletTexture"), &Enemy::GetBulletTexture);
+ ClassDB::bind_method(D_METHOD("SetBulletTexture", "BulletTexture"), &Enemy::SetBulletTexture);
+ ClassDB::add_property("Enemy", PropertyInfo(Variant::OBJECT, "ShotBulletTexture"), "SetBulletTexture", "GetBulletTexture");
+
+ // Signals
+ ClassDB::add_signal("Enemy", MethodInfo("AddScore", PropertyInfo(Variant::INT, "GainedScore")));
+ }
+
+ void Enemy::_integrate_forces(PhysicsDirectBodyState2D* state) {
+
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+
+ set_linear_velocity(Direction * Speed);
+ }
+ void Enemy::_physics_process(double delta) {
+ if (Frames->get_frame_count("default") != 0) {
+ CollisionShape->set_size(Vector2(Frames->get_frame_texture("default", Sprite->get_frame())->get_width(), Frames->get_frame_texture("default", Sprite->get_frame())->get_height()));
+ }
+ if (Direction.x > 0) {
+ Sprite->set_flip_h(true);
+ } else {
+ Sprite->set_flip_h(false);
+ }
+
+ // Anything before this is done within Godot Engine. Anything after is doing Watersports.
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+
+ // Memfree despawn.
+ DespawnTimer += delta;
+ if (DespawnTimer >= 30) {
+ queue_free();
+ }
+
+ // Shooting.
+ if (IsShooting == true) {
+ FireRateTimer += delta;
+ if (FireRateTimer >= FireRate) {
+ Bullet* bullet = memnew(Bullet);
+ bullet->set_position(BulletLocation + get_position());
+ bullet->SetTexture(BulletTexture);
+ bullet->SetDirection(BulletDirection);
+ bullet->add_to_group("Enemy");
+ bullet->add_collision_exception_with(get_node(get_path()));
+ get_parent()->add_child(bullet);
+ FireRateTimer = 0;
+ }
+ }
+
+ for (int i = 0; i < get_colliding_bodies().size(); i++) {
+ auto Collide = Object::cast_to(get_colliding_bodies()[i]);
+ if (Collide->is_in_group("Player") && Collide->is_in_group("Bullet")) { // This is here to stop a runtime crash.
+ Health -= 1;
+ Collide->queue_free();
+ } else if (Collide->is_in_group("Enemy")) {
+ add_collision_exception_with(get_node(Collide->get_path()));
+ }
+ // Dying
+ if (Health <= 0) {
+ emit_signal("AddScore", ScoreAmount);
+ queue_free();
+ }
+ }
+ }
+
+ // Getters and Setters
+ int Enemy::GetHealth() const {
+ return Health;
+ }
+ int Enemy::GetSpeed() const {
+ return Speed;
+ }
+ Vector2 Enemy::GetDirection() const {
+ return Direction;
+ }
+ int Enemy::GetScoreAmount() const {
+ return ScoreAmount;
+ }
+ Ref Enemy::GetFrames() const {
+ return Frames;
+ }
+ bool Enemy::GetIsShooting() const {
+ return IsShooting;
+ }
+ double Enemy::GetFireRate() const {
+ return FireRate;
+ }
+ Vector2 Enemy::GetBulletDirection() const {
+ return BulletDirection;
+ }
+ Ref Enemy::GetBulletTexture() const {
+ return BulletTexture;
+ }
+ Vector2 Enemy::GetBulletLocation() const {
+ return BulletLocation;
+ }
+
+ void Enemy::SetHealth(const int health) {
+ Health = health;
+ }
+ void Enemy::SetSpeed(const int speed) {
+ Speed = speed;
+ }
+ void Enemy::SetDirection(const Vector2 direction) {
+ Direction = direction;
+ }
+ void Enemy::SetScoreAmount(const int scoreAmount) {
+ ScoreAmount = scoreAmount;
+ }
+ void Enemy::SetFrames(const Ref& spriteFrames) {
+ Frames = spriteFrames;
+ Sprite->set_sprite_frames(spriteFrames);
+ }
+ void Enemy::SetIsShooting(const bool isShooting) {
+ IsShooting = isShooting;
+ }
+ void Enemy::SetFireRate(const double fireRate) {
+ FireRate = fireRate;
+ }
+ void Enemy::SetBulletDirection(const Vector2 bulletDirection) {
+ BulletDirection = bulletDirection;
+ }
+ void Enemy::SetBulletTexture(const Ref& bulletTexture) {
+ BulletTexture = bulletTexture;
+ }
+ void Enemy::SetBulletLocation(const Vector2 bulletLocation) {
+ BulletLocation = bulletLocation;
+ }
+};
diff --git a/src/Enemy.hpp b/src/Enemy.hpp
new file mode 100644
index 0000000..9f4ec58
--- /dev/null
+++ b/src/Enemy.hpp
@@ -0,0 +1,76 @@
+#ifndef ENEMY_HPP
+#define ENEMY_HPP
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "Bullet.hpp"
+
+namespace godot {
+ class Enemy : public RigidBody2D {
+ GDCLASS(Enemy, RigidBody2D)
+
+ private:
+ // General
+ int Health = 5;
+ int Speed = 250;
+ Vector2 Direction = Vector2(-1, 0);
+ int ScoreAmount = 200;
+ Ref Frames;
+
+ double DespawnTimer = 0;
+
+ // Shooting
+ bool IsShooting = false;
+ double FireRate = 1;
+ double FireRateTimer = 0;
+ Vector2 BulletDirection = Vector2(-1, 0);
+ Ref BulletTexture;
+ Vector2 BulletLocation = Vector2(0, 0);
+
+ // Nodes
+ AnimatedSprite2D* Sprite;
+ CollisionShape2D* Collision;
+ RectangleShape2D* CollisionShape;
+
+ protected:
+ static void _bind_methods();
+
+ public:
+ Enemy();
+ ~Enemy();
+
+ void _integrate_forces(PhysicsDirectBodyState2D* state) override;
+ void _physics_process(double delta) override;
+
+ // Getters and Setters
+ int GetHealth() const;
+ int GetSpeed() const;
+ Vector2 GetDirection() const;
+ int GetScoreAmount() const;
+ Ref GetFrames() const;
+ bool GetIsShooting() const;
+ double GetFireRate() const;
+ Vector2 GetBulletDirection() const;
+ Ref GetBulletTexture() const;
+ Vector2 GetBulletLocation() const;
+
+ void SetHealth(const int health);
+ void SetSpeed(const int speed);
+ void SetDirection(const Vector2 direction);
+ void SetScoreAmount(const int scoreAmount);
+ void SetFrames(const Ref& spriteFrames);
+ void SetIsShooting(const bool isShooting);
+ void SetFireRate(const double fireRate);
+ void SetBulletDirection(const Vector2 bulletDirection);
+ void SetBulletTexture(const Ref& bulletTexture);
+ void SetBulletLocation(const Vector2 bulletLocation);
+ };
+};
+
+#endif
diff --git a/src/Player.cpp b/src/Player.cpp
new file mode 100644
index 0000000..7019a0c
--- /dev/null
+++ b/src/Player.cpp
@@ -0,0 +1,262 @@
+#include "Player.hpp"
+#include "Enemy.hpp"
+
+#include
+#include
+#include
+#include
+
+#include
+
+namespace godot {
+ Player::Player() {
+ Collision = memnew(CollisionShape2D);
+ CollisionShape = memnew(RectangleShape2D);
+ Sprite = memnew(Sprite2D);
+
+ Collision->set_shape(CollisionShape);
+
+ add_child(Collision);
+ add_child(Sprite);
+
+ add_to_group("Player");
+ }
+
+ Player::~Player() {
+ queue_free();
+ }
+
+ void Player::_bind_methods() {
+ // Regular Variables
+ ClassDB::bind_method(D_METHOD("GetHealth"), &Player::GetHealth);
+ ClassDB::bind_method(D_METHOD("SetHealth", "Health"), &Player::SetHealth);
+ ClassDB::add_property("Player", PropertyInfo(Variant::INT, "Health"), "SetHealth", "GetHealth");
+ ClassDB::bind_method(D_METHOD("GetSpeed"), &Player::GetSpeed);
+ ClassDB::bind_method(D_METHOD("SetSpeed", "Speed"), &Player::SetSpeed);
+ ClassDB::add_property("Player", PropertyInfo(Variant::INT, "Speed"), "SetSpeed", "GetSpeed");
+ ClassDB::bind_method(D_METHOD("GetInvulnerabilityTime"), &Player::GetInvulnerabilityTime);
+ ClassDB::bind_method(D_METHOD("SetInvulnerabilityTime", "InvulnerabilityTime"), &Player::SetInvulnerabilityTime);
+ ClassDB::add_property("Player", PropertyInfo(Variant::FLOAT, "InvulnerabilityTime"), "SetInvulnerabilityTime", "GetInvulnerabilityTime");
+
+ // Killing
+ ClassDB::add_property_group("Player", "Shooting", "Shot");
+ ClassDB::bind_method(D_METHOD("GetFireRate"), &Player::GetFireRate);
+ ClassDB::bind_method(D_METHOD("SetFireRate", "FireRate"), &Player::SetFireRate);
+ ClassDB::add_property("Player", PropertyInfo(Variant::FLOAT, "ShotFireRate"), "SetFireRate", "GetFireRate");
+ ClassDB::bind_method(D_METHOD("GetBulletLocation"), &Player::GetBulletLocation);
+ ClassDB::bind_method(D_METHOD("SetBulletLocation", "BulletLocation"), &Player::SetBulletLocation);
+ ClassDB::add_property("Player", PropertyInfo(Variant::VECTOR2, "ShotBulletLocation"), "SetBulletLocation", "GetBulletLocation");
+ ClassDB::bind_method(D_METHOD("GetBulletTexture"), &Player::GetBulletTexture);
+ ClassDB::bind_method(D_METHOD("SetBulletTexture", "BulletTexture"), &Player::SetBulletTexture);
+ ClassDB::add_property("Player", PropertyInfo(Variant::OBJECT, "ShotBulletTexture"), "SetBulletTexture", "GetBulletTexture");
+
+ // Textures
+ ClassDB::bind_method(D_METHOD("GetPlayerUp"), &Player::GetPlayerUp);
+ ClassDB::bind_method(D_METHOD("SetPlayerUp", "PlayerUp"), &Player::SetPlayerUp);
+ ClassDB::add_property("Player", PropertyInfo(Variant::OBJECT, "PlayerUp"), "SetPlayerUp", "GetPlayerUp");
+ ClassDB::bind_method(D_METHOD("GetPlayerNeutral"), &Player::GetPlayerNeutral);
+ ClassDB::bind_method(D_METHOD("SetPlayerNeutral", "PlayerNeutral"), &Player::SetPlayerNeutral);
+ ClassDB::add_property("Player", PropertyInfo(Variant::OBJECT, "PlayerNeutral"), "SetPlayerNeutral", "GetPlayerNeutral");
+ ClassDB::bind_method(D_METHOD("GetPlayerDown"), &Player::GetPlayerDown);
+ ClassDB::bind_method(D_METHOD("SetPlayerDown", "PlayerDown"), &Player::SetPlayerDown);
+ ClassDB::add_property("Player", PropertyInfo(Variant::OBJECT, "PlayerDown"), "SetPlayerDown", "GetPlayerDown");
+
+ // Keys
+ ClassDB::add_property_group("Player", "Keys", "Input");
+ ClassDB::bind_method(D_METHOD("GetLeft"), &Player::GetLeft);
+ ClassDB::bind_method(D_METHOD("SetLeft", "Left"), &Player::SetLeft);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputLeft"), "SetLeft", "GetLeft");
+ ClassDB::bind_method(D_METHOD("GetUp"), &Player::GetUp);
+ ClassDB::bind_method(D_METHOD("SetUp", "Up"), &Player::SetUp);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputUp"), "SetUp", "GetUp");
+ ClassDB::bind_method(D_METHOD("GetRight"), &Player::GetRight);
+ ClassDB::bind_method(D_METHOD("SetRight", "Right"), &Player::SetRight);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputRight"), "SetRight", "GetRight");
+ ClassDB::bind_method(D_METHOD("GetDown"), &Player::GetDown);
+ ClassDB::bind_method(D_METHOD("SetDown", "Down"), &Player::SetDown);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputDown"), "SetDown", "GetDown");
+ ClassDB::bind_method(D_METHOD("GetShoot"), &Player::GetShoot);
+ ClassDB::bind_method(D_METHOD("SetShoot", "Shoot"), &Player::SetShoot);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputShoot"), "SetShoot", "GetShoot");
+ ClassDB::bind_method(D_METHOD("GetSpeedUp"), &Player::GetSpeedUp);
+ ClassDB::bind_method(D_METHOD("SetSpeedUp", "SpeedUp"), &Player::SetSpeedUp);
+ ClassDB::add_property("Player", PropertyInfo(Variant::STRING_NAME, "InputSpeedUp"), "SetSpeedUp", "GetSpeedUp");
+
+ // Individuals
+ ClassDB::bind_method(D_METHOD("GetInvulnerability"), &Player::GetInvulnerability);
+ }
+
+ void Player::_physics_process(double delta) {
+ int TheSpeed = Speed;
+ FireRateTimer += delta;
+ Sprite->set_texture(PlayerNeutral);
+ CollisionShape->set_size(Vector2(PlayerNeutral->get_width(), PlayerNeutral->get_height()));
+
+ // Anything before this is done in engine. Anything after is shot on sight.
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+
+ // Setting speeds
+ int XDirection = Input::get_singleton()->get_axis(Left, Right);
+ int YDirection = Input::get_singleton()->get_axis(Up, Down);
+ if (Input::get_singleton()->get_action_raw_strength(SpeedUp) != 0) {
+ TheSpeed *= 2;
+ }
+
+ // Player control.
+ if (PlayerControl == true) {
+ // invulnerable
+ if (Invulnerable == true) {
+ set_modulate(Color(1, 1, 1, 0.2));
+ InvulnerabilityTimer += delta;
+ if (InvulnerabilityTimer >= InvulnerabilityTime) {
+ InvulnerabilityTimer = 0;
+ Invulnerable = false;
+ set_modulate(Color(1, 1, 1, 1));
+ }
+ }
+ set_velocity(Vector2(XDirection, YDirection).normalized() * TheSpeed);
+ // Change thing when going up and down.
+ if (YDirection == 1) {
+ Sprite->set_texture(PlayerDown);
+ } else if (YDirection == -1) {
+ Sprite->set_texture(PlayerUp);
+ }
+ } else {
+ set_velocity(Vector2(0, 0));
+ }
+
+ // Shooting.
+ if (Input::get_singleton()->get_action_raw_strength(Shoot) != 0) {
+ Bullet* bullet = memnew(Bullet);
+ bullet->set_position(BulletLocation + get_position());
+ bullet->SetTexture(BulletTexture);
+ bullet->SetDirection(Vector2(1, 0));
+ bullet->add_to_group("Player");
+ bullet->add_collision_exception_with(get_node(get_path()));
+ get_parent()->add_child(bullet);
+ FireRateTimer = 0;
+ }
+
+ move_and_slide();
+
+ // Collisions
+ for (int i = 0; i < get_slide_collision_count(); i++) {
+ Ref Collide = get_slide_collision(i);
+ if (Object::cast_to(Collide->get_collider())->is_in_group("Enemy") && !(Object::cast_to(Collide->get_collider())->is_in_group("Bullet")) && Invulnerable == false) {
+ Invulnerable = true;
+ Health -= 1;
+ Object::cast_to(Collide->get_collider())->SetHealth(Object::cast_to(Collide->get_collider())->GetHealth() - 1);
+ } else if (Object::cast_to(Collide->get_collider())->is_in_group("Enemy") && Invulnerable == false) { // This is here to stop a runtime crash with bullets.
+ Invulnerable = true;
+ Health -= 1;
+ } else if (Object::cast_to(Collide->get_collider())->is_in_group("Bullet")) {
+ Object::cast_to(Collide->get_collider())->queue_free();
+ }
+
+ // Death
+ if (Health == 0) {
+ PlayerControl = false;
+ }
+ }
+ }
+
+ // Individual Getters
+ bool Player::GetInvulnerability() const {
+ return Invulnerable;
+ }
+
+ // Getters and Setters
+ int Player::GetHealth() const {
+ return Health;
+ }
+ int Player::GetSpeed() const {
+ return Speed;
+ }
+ float Player::GetInvulnerabilityTime() const {
+ return InvulnerabilityTime;
+ }
+ float Player::GetFireRate() const {
+ return FireRate;
+ }
+ Vector2 Player::GetBulletLocation() const {
+ return BulletLocation;
+ }
+ Ref Player::GetBulletTexture() const {
+ return BulletTexture;
+ }
+ Ref Player::GetPlayerUp() const {
+ return PlayerUp;
+ }
+ Ref Player::GetPlayerNeutral() const {
+ return PlayerNeutral;
+ }
+ Ref Player::GetPlayerDown() const {
+ return PlayerDown;
+ }
+ StringName Player::GetLeft() const {
+ return Left;
+ }
+ StringName Player::GetUp() const {
+ return Up;
+ }
+ StringName Player::GetRight() const {
+ return Right;
+ }
+ StringName Player::GetDown() const {
+ return Down;
+ }
+ StringName Player::GetShoot() const {
+ return Shoot;
+ }
+ StringName Player::GetSpeedUp() const {
+ return SpeedUp;
+ }
+
+ void Player::SetHealth(const int health) {
+ Health = health;
+ }
+ void Player::SetSpeed(const int speed) {
+ Speed = speed;
+ }
+ void Player::SetInvulnerabilityTime(const float invulnerabilityTime) {
+ InvulnerabilityTime = invulnerabilityTime;
+ }
+ void Player::SetFireRate(const float fireRate) {
+ FireRate = fireRate;
+ }
+ void Player::SetBulletLocation(const Vector2 bulletLocation) {
+ BulletLocation = bulletLocation;
+ }
+ void Player::SetBulletTexture(const Ref& bulletTexture) {
+ BulletTexture = bulletTexture;
+ }
+ void Player::SetPlayerUp(const Ref& playerUp) {
+ PlayerUp = playerUp;
+ }
+ void Player::SetPlayerNeutral(const Ref& playerNeutral) {
+ PlayerNeutral = playerNeutral;
+ }
+ void Player::SetPlayerDown(const Ref& playerDown) {
+ PlayerDown = playerDown;
+ }
+ void Player::SetLeft(const StringName left) {
+ Left = left;
+ }
+ void Player::SetUp(const StringName up) {
+ Up = up;
+ }
+ void Player::SetRight(const StringName right) {
+ Right = right;
+ }
+ void Player::SetDown(const StringName down) {
+ Down = down;
+ }
+ void Player::SetShoot(const StringName shoot) {
+ Shoot = shoot;
+ }
+ void Player::SetSpeedUp(const StringName speedUp) {
+ SpeedUp = speedUp;
+ }
+};
diff --git a/src/Player.hpp b/src/Player.hpp
new file mode 100644
index 0000000..a0236b1
--- /dev/null
+++ b/src/Player.hpp
@@ -0,0 +1,98 @@
+#ifndef PLAYER_HPP
+#define PLAYER_HPP
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+#include "Bullet.hpp"
+
+namespace godot {
+ class Player : public CharacterBody2D {
+ GDCLASS(Player, CharacterBody2D)
+
+ private:
+ // Regular
+ int Health = 3;
+ int Speed = 500;
+ bool Invulnerable = false;
+ double InvulnerabilityTime = 3;
+ double InvulnerabilityTimer = 0;
+ bool PlayerControl = true;
+
+ // Killing
+ Ref BulletTexture;
+ Vector2 BulletLocation = Vector2(0, 0);
+ double FireRate = 0.04;
+ double FireRateTimer = 0;
+
+ //Textures
+ Ref PlayerUp;
+ Ref PlayerNeutral;
+ Ref PlayerDown;
+
+ // Keys
+ StringName Left;
+ StringName Up;
+ StringName Right;
+ StringName Down;
+ StringName Shoot;
+ StringName SpeedUp;
+
+ // Nodes
+ Sprite2D* Sprite;
+ CollisionShape2D* Collision;
+ RectangleShape2D* CollisionShape;
+
+ protected:
+ static void _bind_methods();
+
+ public:
+ Player();
+ ~Player();
+
+ void _physics_process(double delta) override;
+
+ // Indivudual Methods
+ bool GetInvulnerability() const;
+
+ // Getters and Setters
+ int GetHealth() const;
+ int GetSpeed() const;
+ float GetInvulnerabilityTime() const;
+ float GetFireRate() const;
+ Vector2 GetBulletLocation() const;
+ Ref GetBulletTexture() const;
+ Ref GetPlayerUp() const;
+ Ref GetPlayerNeutral() const;
+ Ref GetPlayerDown() const;
+ StringName GetLeft() const;
+ StringName GetUp() const;
+ StringName GetRight() const;
+ StringName GetDown() const;
+ StringName GetShoot() const;
+ StringName GetSpeedUp() const;
+
+ void SetHealth(const int health);
+ void SetSpeed(const int speed);
+ void SetInvulnerabilityTime(const float invulnerabilityTime);
+ void SetFireRate(const float fireRate);
+ void SetBulletLocation(const Vector2 bulletLocation);
+ void SetBulletTexture(const Ref& bulletTexture);
+ void SetPlayerUp(const Ref& playerUp);
+ void SetPlayerNeutral(const Ref& playerNeutral);
+ void SetPlayerDown(const Ref& playerDown);
+ void SetLeft(const StringName left);
+ void SetUp(const StringName up);
+ void SetRight(const StringName right);
+ void SetDown(const StringName down);
+ void SetShoot(const StringName shoot);
+ void SetSpeedUp(const StringName speedUp);
+ };
+};
+
+#endif
diff --git a/src/RegisterTypes.cpp b/src/RegisterTypes.cpp
new file mode 100644
index 0000000..5f95a1e
--- /dev/null
+++ b/src/RegisterTypes.cpp
@@ -0,0 +1,42 @@
+#include "RegisterTypes.hpp"
+
+#include "Player.hpp"
+#include "Bullet.hpp"
+#include "Enemy.hpp"
+#include "WaveSystem.hpp"
+
+#include
+#include
+#include
+
+using namespace godot;
+
+void InitializeModule(ModuleInitializationLevel p_level) {
+ if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
+ return;
+ }
+
+ GDREGISTER_CLASS(Player);
+ GDREGISTER_CLASS(Bullet);
+ GDREGISTER_CLASS(WaveSystem);
+ GDREGISTER_CLASS(Enemy);
+}
+
+void UninitializeModule(ModuleInitializationLevel p_level) {
+ if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
+ return;
+ }
+}
+
+extern "C" {
+ // Initialization.
+ GDExtensionBool GDE_EXPORT LibraryInit(GDExtensionInterfaceGetProcAddress p_get_proc_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
+ godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
+
+ init_obj.register_initializer(InitializeModule);
+ init_obj.register_terminator(UninitializeModule);
+ init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
+
+ return init_obj.init();
+ }
+}
diff --git a/src/RegisterTypes.hpp b/src/RegisterTypes.hpp
new file mode 100644
index 0000000..b8b9365
--- /dev/null
+++ b/src/RegisterTypes.hpp
@@ -0,0 +1,11 @@
+#ifndef REGISTER_TYPES_HPP
+#define REGISTER_TYPES_HPP
+
+#include
+
+using namespace godot;
+
+void InitializeModule(ModuleInitializationLevel p_level);
+void UninitializeModule(ModuleInitializationLevel p_level);
+
+#endif
diff --git a/src/WaveSystem.cpp b/src/WaveSystem.cpp
new file mode 100644
index 0000000..8120962
--- /dev/null
+++ b/src/WaveSystem.cpp
@@ -0,0 +1,127 @@
+#include "WaveSystem.hpp"
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+namespace godot {
+ WaveSystem::WaveSystem() {
+ Fader = memnew(ColorRect);
+
+ Fader->set_offset(SIDE_LEFT, -10000);
+ Fader->set_offset(SIDE_TOP, -10000);
+ Fader->set_offset(SIDE_RIGHT, 10000);
+ Fader->set_offset(SIDE_BOTTOM, 10000);
+ Fader->set_color(Color(0, 0, 0, 0));
+
+ add_child(Fader);
+ }
+
+ WaveSystem::~WaveSystem() {
+ queue_free();
+ }
+
+ void WaveSystem::_bind_methods() {
+ // Variables
+ ClassDB::bind_method(D_METHOD("GetTimeTilWave"), &WaveSystem::GetTimeTilWave);
+ ClassDB::bind_method(D_METHOD("SetTimeTilWave", "TimeTilWave"), &WaveSystem::SetTimeTilWave);
+ ClassDB::add_property("WaveSystem", PropertyInfo(Variant::ARRAY, "TimeTilWave"), "SetTimeTilWave", "GetTimeTilWave");
+ ClassDB::bind_method(D_METHOD("GetWaveScenes"), &WaveSystem::GetWaveScenes);
+ ClassDB::bind_method(D_METHOD("SetWaveScenes", "WaveScenes"), &WaveSystem::SetWaveScenes);
+ ClassDB::add_property("WaveSystem", PropertyInfo(Variant::ARRAY, "WaveScenes", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "SetWaveScenes", "GetWaveScenes");
+
+ // Fades
+ ClassDB::bind_method(D_METHOD("GetFadeAtBeginning"), &WaveSystem::GetFadeAtBeginning);
+ ClassDB::bind_method(D_METHOD("SetFadeAtBeginning", "FadeAtBeginning"), &WaveSystem::SetFadeAtBeginning);
+ ClassDB::add_property("WaveSystem", PropertyInfo(Variant::BOOL, "FadeAtBeginning"), "SetFadeAtBeginning", "GetFadeAtBeginning");
+ ClassDB::bind_method(D_METHOD("GetFadeAtEnd"), &WaveSystem::GetFadeAtEnd);
+ ClassDB::bind_method(D_METHOD("SetFadeAtEnd", "FadeAtEnd"), &WaveSystem::SetFadeAtEnd);
+ ClassDB::add_property("WaveSystem", PropertyInfo(Variant::BOOL, "FadeAtEnd"), "SetFadeAtEnd", "GetFadeAtEnd");
+ ClassDB::bind_method(D_METHOD("GetFadeTime"), &WaveSystem::GetFadeTime);
+ ClassDB::bind_method(D_METHOD("SetFadeTime", "FadeTime"), &WaveSystem::SetFadeTime);
+ ClassDB::add_property("WaveSystem", PropertyInfo(Variant::INT, "FadeTime"), "SetFadeTime", "GetFadeTime");
+
+ // Signals
+ ClassDB::add_signal("WaveSystem", MethodInfo("WavesFinished"));
+ }
+
+ void WaveSystem::_physics_process(double delta) {
+ // Anything before this means it plays in the editor.
+ if (Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+
+ // Do some calculations first.
+ if (Calculated == false) {
+ if (FadeAtBeginning == true) {
+ WaveTimer = WaveTimer - FadeTime;
+ }
+ Calculated = true;
+ }
+
+ // If wavetimer is negative, it most likely means something is fading. So: fade.
+ if (WaveTimer < 0) {
+ Fader->set_color(Color(0, 0, 0, Math::abs(WaveTimer) / FadeTime));
+ } else {
+ Fader->set_color(Color(0, 0, 0, 0));
+ }
+
+ // Don't crash.
+ if (TimeTilWave.size() != CurrentWave) {
+ WaveTimer = WaveTimer + delta;
+ double funfun = TimeTilWave[CurrentWave]; // Kill yourself. Now.
+ // When the timer is over the current wavie, turn it to the next wavie.
+ if (WaveTimer >= funfun) {
+ Node* child = Object::cast_to(WaveScenes[CurrentWave])->instantiate();
+ // Add, then move the child to get it to be hidden by fades.
+ add_sibling(child);
+ WaveTimer = 0;
+ CurrentWave = CurrentWave + 1;
+ }
+ // End fade.
+ } else if (FadeAtEnd == true && WaveTimer <= FadeTime) {
+ WaveTimer = WaveTimer + delta;
+ Fader->set_color(Color(0, 0, 0, WaveTimer / FadeTime));
+ // Do something that this node can't.
+ } else {
+ Fader->set_color(Color(0, 0, 0, 1));
+ emit_signal("WavesFinished");
+ }
+ }
+
+ TypedArray WaveSystem::GetTimeTilWave() const {
+ return TimeTilWave;
+ }
+ TypedArray WaveSystem::GetWaveScenes() const {
+ return WaveScenes;
+ }
+ bool WaveSystem::GetFadeAtBeginning() const {
+ return FadeAtBeginning;
+ }
+ bool WaveSystem::GetFadeAtEnd() const {
+ return FadeAtEnd;
+ }
+ int WaveSystem::GetFadeTime() const {
+ return FadeTime;
+ }
+
+ void WaveSystem::SetTimeTilWave(const TypedArray timeTilWave) {
+ TimeTilWave = timeTilWave;
+ }
+ void WaveSystem::SetWaveScenes(const TypedArray waveScenes) {
+ WaveScenes = waveScenes;
+ }
+ void WaveSystem::SetFadeAtBeginning(const bool fadeAtBeginning) {
+ FadeAtBeginning = fadeAtBeginning;
+ }
+ void WaveSystem::SetFadeAtEnd(const bool fadeAtEnd) {
+ FadeAtEnd = fadeAtEnd;
+ }
+ void WaveSystem::SetFadeTime(const int fadeTime) {
+ FadeTime = fadeTime;
+ }
+};
diff --git a/src/WaveSystem.hpp b/src/WaveSystem.hpp
new file mode 100644
index 0000000..549e8c2
--- /dev/null
+++ b/src/WaveSystem.hpp
@@ -0,0 +1,50 @@
+#ifndef WAVE_HPP
+#define WAVE_HPP
+
+#include
+#include
+#include
+
+namespace godot {
+ class WaveSystem : public Node {
+ GDCLASS(WaveSystem, Node)
+
+ private:
+ TypedArray TimeTilWave;
+ TypedArray WaveScenes;
+
+ double WaveTimer = 0.0;
+ int CurrentWave = 0;
+
+ bool FadeAtBeginning = false;
+ bool FadeAtEnd = false;
+ int FadeTime = 1;
+ bool Calculated = false;
+
+ ColorRect* Fader;
+
+ protected:
+ static void _bind_methods();
+
+ public:
+ WaveSystem();
+ ~WaveSystem();
+
+ void _physics_process(double delta) override;
+
+ // Getters and Setters
+ TypedArray GetTimeTilWave() const;
+ TypedArray GetWaveScenes() const;
+ bool GetFadeAtBeginning() const;
+ bool GetFadeAtEnd() const;
+ int GetFadeTime() const;
+
+ void SetTimeTilWave(const TypedArray TimeTilWave);
+ void SetWaveScenes(const TypedArray WaveScenes);
+ void SetFadeAtBeginning(const bool fadeAtBeginning);
+ void SetFadeAtEnd(const bool fadeAtEnd);
+ void SetFadeTime(const int fadeTime);
+ };
+};
+
+#endif
diff --git a/src/gen/doc_data.gen.cpp b/src/gen/doc_data.gen.cpp
new file mode 100644
index 0000000..b719a86
--- /dev/null
+++ b/src/gen/doc_data.gen.cpp
@@ -0,0 +1,397 @@
+/* THIS FILE IS GENERATED DO NOT EDIT */
+
+#include
+
+static const char *_doc_data_hash = "4239955519742442644";
+static const int _doc_data_uncompressed_size = 1918;
+static const int _doc_data_compressed_size = 385;
+static const unsigned char _doc_data_compressed[] = {
+ 120,
+ 218,
+ 237,
+ 84,
+ 77,
+ 79,
+ 227,
+ 48,
+ 16,
+ 61,
+ 195,
+ 175,
+ 176,
+ 124,
+ 39,
+ 46,
+ 236,
+ 5,
+ 85,
+ 13,
+ 72,
+ 236,
+ 199,
+ 137,
+ 69,
+ 136,
+ 130,
+ 224,
+ 134,
+ 92,
+ 123,
+ 154,
+ 140,
+ 100,
+ 123,
+ 34,
+ 143,
+ 67,
+ 218,
+ 127,
+ 143,
+ 147,
+ 80,
+ 20,
+ 42,
+ 14,
+ 171,
+ 61,
+ 32,
+ 129,
+ 184,
+ 88,
+ 111,
+ 230,
+ 197,
+ 243,
+ 245,
+ 198,
+ 89,
+ 156,
+ 111,
+ 188,
+ 19,
+ 79,
+ 16,
+ 25,
+ 41,
+ 148,
+ 242,
+ 184,
+ 152,
+ 73,
+ 1,
+ 193,
+ 144,
+ 197,
+ 80,
+ 149,
+ 242,
+ 238,
+ 246,
+ 207,
+ 209,
+ 169,
+ 20,
+ 231,
+ 103,
+ 135,
+ 11,
+ 227,
+ 52,
+ 179,
+ 8,
+ 218,
+ 67,
+ 41,
+ 47,
+ 90,
+ 231,
+ 32,
+ 73,
+ 129,
+ 161,
+ 134,
+ 136,
+ 137,
+ 75,
+ 121,
+ 131,
+ 21,
+ 218,
+ 11,
+ 178,
+ 219,
+ 147,
+ 95,
+ 82,
+ 228,
+ 136,
+ 129,
+ 231,
+ 27,
+ 198,
+ 82,
+ 214,
+ 41,
+ 53,
+ 115,
+ 165,
+ 186,
+ 174,
+ 43,
+ 186,
+ 31,
+ 5,
+ 197,
+ 74,
+ 157,
+ 204,
+ 102,
+ 199,
+ 234,
+ 225,
+ 239,
+ 229,
+ 210,
+ 212,
+ 224,
+ 245,
+ 17,
+ 6,
+ 78,
+ 58,
+ 24,
+ 200,
+ 183,
+ 24,
+ 231,
+ 129,
+ 174,
+ 114,
+ 2,
+ 110,
+ 180,
+ 129,
+ 145,
+ 191,
+ 36,
+ 163,
+ 211,
+ 80,
+ 89,
+ 31,
+ 137,
+ 115,
+ 168,
+ 168,
+ 187,
+ 162,
+ 194,
+ 84,
+ 183,
+ 171,
+ 150,
+ 33,
+ 26,
+ 10,
+ 9,
+ 66,
+ 42,
+ 12,
+ 121,
+ 85,
+ 145,
+ 165,
+ 108,
+ 84,
+ 24,
+ 96,
+ 196,
+ 202,
+ 107,
+ 78,
+ 16,
+ 149,
+ 37,
+ 163,
+ 134,
+ 242,
+ 139,
+ 13,
+ 91,
+ 121,
+ 118,
+ 120,
+ 176,
+ 88,
+ 69,
+ 132,
+ 245,
+ 163,
+ 5,
+ 54,
+ 17,
+ 155,
+ 62,
+ 126,
+ 239,
+ 84,
+ 239,
+ 122,
+ 247,
+ 63,
+ 218,
+ 179,
+ 83,
+ 155,
+ 40,
+ 162,
+ 118,
+ 60,
+ 144,
+ 111,
+ 44,
+ 15,
+ 169,
+ 38,
+ 59,
+ 18,
+ 19,
+ 236,
+ 193,
+ 175,
+ 242,
+ 184,
+ 95,
+ 220,
+ 175,
+ 152,
+ 177,
+ 10,
+ 187,
+ 48,
+ 19,
+ 156,
+ 27,
+ 236,
+ 7,
+ 148,
+ 70,
+ 98,
+ 98,
+ 45,
+ 198,
+ 150,
+ 50,
+ 248,
+ 31,
+ 5,
+ 127,
+ 7,
+ 240,
+ 219,
+ 111,
+ 1,
+ 63,
+ 175,
+ 128,
+ 215,
+ 78,
+ 111,
+ 33,
+ 78,
+ 21,
+ 252,
+ 89,
+ 235,
+ 168,
+ 77,
+ 30,
+ 215,
+ 231,
+ 86,
+ 241,
+ 224,
+ 182,
+ 6,
+ 225,
+ 53,
+ 6,
+ 209,
+ 12,
+ 45,
+ 10,
+ 179,
+ 235,
+ 75,
+ 172,
+ 41,
+ 138,
+ 148,
+ 217,
+ 37,
+ 218,
+ 124,
+ 152,
+ 72,
+ 206,
+ 229,
+ 17,
+ 137,
+ 101,
+ 77,
+ 57,
+ 97,
+ 44,
+ 254,
+ 113,
+ 3,
+ 134,
+ 4,
+ 185,
+ 208,
+ 38,
+ 255,
+ 194,
+ 224,
+ 253,
+ 36,
+ 218,
+ 185,
+ 29,
+ 177,
+ 110,
+ 131,
+ 233,
+ 47,
+ 114,
+ 241,
+ 117,
+ 118,
+ 231,
+ 94,
+ 63,
+ 193,
+ 114,
+ 155,
+ 53,
+ 241,
+ 211,
+ 253,
+ 185,
+ 34,
+ 11,
+ 223,
+ 79,
+ 255,
+ 99,
+ 229,
+ 123,
+ 6,
+ 177,
+ 11,
+ 145,
+ 79,
+};
+
+static godot::internal::DocDataRegistration _doc_data_registration(_doc_data_hash, _doc_data_uncompressed_size, _doc_data_compressed_size, _doc_data_compressed);
+