diff --git a/Assets/Sounds/Menu Navigate.ogg b/Assets/Sounds/Menu Navigate.ogg new file mode 100644 index 0000000..1fc619a Binary files /dev/null and b/Assets/Sounds/Menu Navigate.ogg differ diff --git a/Assets/Sounds/Menu Navigate.ogg.import b/Assets/Sounds/Menu Navigate.ogg.import new file mode 100644 index 0000000..8faf8f3 --- /dev/null +++ b/Assets/Sounds/Menu Navigate.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/Menu Navigate.ogg-f09f417bef5b0a514f758f8fb196770b.oggstr" + +[deps] + +source_file="res://Assets/Sounds/Menu Navigate.ogg" +dest_files=[ "res://.import/Menu Navigate.ogg-f09f417bef5b0a514f758f8fb196770b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/Assets/Sounds/NANI.ogg b/Assets/Sounds/NANI.ogg new file mode 100644 index 0000000..514b466 Binary files /dev/null and b/Assets/Sounds/NANI.ogg differ diff --git a/Assets/Sounds/NANI.ogg.import b/Assets/Sounds/NANI.ogg.import new file mode 100644 index 0000000..32d66a2 --- /dev/null +++ b/Assets/Sounds/NANI.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/NANI.ogg-9ac286e7d922faaca65783f7174c8b79.oggstr" + +[deps] + +source_file="res://Assets/Sounds/NANI.ogg" +dest_files=[ "res://.import/NANI.ogg-9ac286e7d922faaca65783f7174c8b79.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/Assets/Sounds/arena_bgm.wav b/Assets/Sounds/arena_bgm.wav new file mode 100644 index 0000000..a3ed91a Binary files /dev/null and b/Assets/Sounds/arena_bgm.wav differ diff --git a/Assets/Sounds/arena_bgm.wav.import b/Assets/Sounds/arena_bgm.wav.import new file mode 100644 index 0000000..98849b5 --- /dev/null +++ b/Assets/Sounds/arena_bgm.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/arena_bgm.wav-8991e60f1d87e463504cb80109b78f29.sample" + +[deps] + +source_file="res://Assets/Sounds/arena_bgm.wav" +dest_files=[ "res://.import/arena_bgm.wav-8991e60f1d87e463504cb80109b78f29.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/Assets/Sounds/sfx-weapon-singleshot2.ogg b/Assets/Sounds/sfx-weapon-singleshot2.ogg new file mode 100644 index 0000000..2800d71 Binary files /dev/null and b/Assets/Sounds/sfx-weapon-singleshot2.ogg differ diff --git a/Assets/Sounds/sfx-weapon-singleshot2.ogg.import b/Assets/Sounds/sfx-weapon-singleshot2.ogg.import new file mode 100644 index 0000000..d9fcb77 --- /dev/null +++ b/Assets/Sounds/sfx-weapon-singleshot2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/sfx-weapon-singleshot2.ogg-7e38434f240c65113aceba6633964e2e.oggstr" + +[deps] + +source_file="res://Assets/Sounds/sfx-weapon-singleshot2.ogg" +dest_files=[ "res://.import/sfx-weapon-singleshot2.ogg-7e38434f240c65113aceba6633964e2e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/Assets/Sprites/Entities/Computer SPriteSheet.png b/Assets/Sprites/Entities/Computer SPriteSheet.png index c708570..7c28f77 100644 Binary files a/Assets/Sprites/Entities/Computer SPriteSheet.png and b/Assets/Sprites/Entities/Computer SPriteSheet.png differ diff --git a/Assets/Sprites/Entities/Cultist SpriteSheet.png b/Assets/Sprites/Entities/Cultist SpriteSheet.png index cbe457b..52dff44 100644 Binary files a/Assets/Sprites/Entities/Cultist SpriteSheet.png and b/Assets/Sprites/Entities/Cultist SpriteSheet.png differ diff --git a/Assets/Sprites/Leaderboard button hovered-export.png b/Assets/Sprites/Leaderboard button hovered-export.png new file mode 100644 index 0000000..23e6742 Binary files /dev/null and b/Assets/Sprites/Leaderboard button hovered-export.png differ diff --git a/Assets/Sprites/Leaderboard button hovered-export.png.import b/Assets/Sprites/Leaderboard button hovered-export.png.import new file mode 100644 index 0000000..e95e959 --- /dev/null +++ b/Assets/Sprites/Leaderboard button hovered-export.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Leaderboard button hovered-export.png-14ded54d1f9a65058e39bc79063728c4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Leaderboard button hovered-export.png" +dest_files=[ "res://.import/Leaderboard button hovered-export.png-14ded54d1f9a65058e39bc79063728c4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Assets/Sprites/Leaderboard button-export.png b/Assets/Sprites/Leaderboard button-export.png new file mode 100644 index 0000000..094cba3 Binary files /dev/null and b/Assets/Sprites/Leaderboard button-export.png differ diff --git a/Assets/Sprites/Leaderboard button-export.png.import b/Assets/Sprites/Leaderboard button-export.png.import new file mode 100644 index 0000000..bdce777 --- /dev/null +++ b/Assets/Sprites/Leaderboard button-export.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Leaderboard button-export.png-29ee2d4ebdd316bf1f8834b3543ef118.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Leaderboard button-export.png" +dest_files=[ "res://.import/Leaderboard button-export.png-29ee2d4ebdd316bf1f8834b3543ef118.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/Assets/Sprites/Leaderboard.png.import b/Assets/Sprites/Leaderboard.png.import index 35dcbf9..3a8caee 100644 --- a/Assets/Sprites/Leaderboard.png.import +++ b/Assets/Sprites/Leaderboard.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 diff --git a/Levels/Arena.tscn b/Levels/Arena.tscn index a06d928..c3e9ff2 100644 --- a/Levels/Arena.tscn +++ b/Levels/Arena.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=15 format=2] [ext_resource path="res://Levels/map_tilese.tres" type="TileSet" id=1] [ext_resource path="res://Objects/Enemies/Roach/Roach.tscn" type="PackedScene" id=2] @@ -13,6 +13,7 @@ [ext_resource path="res://Objects/EnemySpawner.tscn" type="PackedScene" id=11] [ext_resource path="res://Objects/Enemies/Void/Void.tscn" type="PackedScene" id=12] [ext_resource path="res://Levels/Arena.cs" type="Script" id=13] +[ext_resource path="res://Assets/Sounds/arena_bgm.wav" type="AudioStream" id=14] [node name="Arena" type="Node"] script = ExtResource( 13 ) @@ -53,7 +54,19 @@ scale = Vector2( 0.962824, 1 ) Enemies = [ ExtResource( 7 ), ExtResource( 9 ), ExtResource( 2 ), ExtResource( 5 ), ExtResource( 4 ), ExtResource( 12 ) ] [node name="Roach" parent="TestArena" instance=ExtResource( 2 )] -position = Vector2( 500, 500 ) +position = Vector2( 142.936, 339.874 ) + +[node name="Virus" parent="TestArena" instance=ExtResource( 4 )] +position = Vector2( 257.65, 595.434 ) + +[node name="Void" parent="TestArena" instance=ExtResource( 12 )] +position = Vector2( 705.297, 490.211 ) + +[node name="Spider" parent="TestArena" instance=ExtResource( 5 )] +position = Vector2( 373.138, 170.175 ) + +[node name="Computer" parent="TestArena" instance=ExtResource( 7 )] +position = Vector2( -110.412, 516.134 ) [node name="ModuleDropper" parent="." instance=ExtResource( 10 )] layer = 128 @@ -65,4 +78,14 @@ layer = 128 layer = 126 [node name="Shaders" parent="ShaderLayer" instance=ExtResource( 3 )] +margin_left = 6.12128 +margin_top = -47.3051 +margin_right = 46.1213 +margin_bottom = -7.30511 mouse_filter = 2 + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +pause_mode = 2 +stream = ExtResource( 14 ) +volume_db = 0.8 +autoplay = true diff --git a/Levels/Leaderboard.cs b/Levels/Leaderboard.cs index 3309192..9aed397 100644 --- a/Levels/Leaderboard.cs +++ b/Levels/Leaderboard.cs @@ -21,6 +21,14 @@ public override void _EnterTree() LoadLeaderboard(); } + public override void _Input(InputEvent @event) + { + if(Input.IsActionPressed("E")) + { + GetTree().ChangeScene("res://Levels/Main Menu.tscn"); + } + } + public void GetLeaderboard() { string uri = "http://dreamlo.com/lb/5f536936eb371809c4113b75/json"; diff --git a/Levels/Leaderboard.tscn b/Levels/Leaderboard.tscn index e9142fe..97c6984 100644 --- a/Levels/Leaderboard.tscn +++ b/Levels/Leaderboard.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://Assets/Themes/Classic311/Classic311.tres" type="Theme" id=1] -[ext_resource path="res://Assets/Sprites/leaderboard.png" type="Texture" id=2] +[ext_resource path="res://Assets/Sprites/Leaderboard.png" type="Texture" id=2] [ext_resource path="res://Assets/Jeebz-Regular.ttf" type="DynamicFontData" id=3] [ext_resource path="res://Levels/Leaderboard.cs" type="Script" id=5] [ext_resource path="res://Assets/Jeebz-Bold.ttf" type="DynamicFontData" id=6] @@ -13,6 +13,10 @@ font_data = ExtResource( 3 ) size = 7 font_data = ExtResource( 6 ) +[sub_resource type="DynamicFont" id=3] +size = 8 +font_data = ExtResource( 3 ) + [node name="Leaderboard" type="Control"] anchor_right = 1.0 margin_left = -0.652466 @@ -110,3 +114,12 @@ align = 2 __meta__ = { "_edit_use_anchors_": false } + +[node name="Label2" type="Label" parent="."] +margin_left = 235.815 +margin_top = 166.134 +margin_right = 343.815 +margin_bottom = 180.134 +custom_fonts/font = SubResource( 3 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +text = "Press [E] to go back" diff --git a/Levels/Main Menu.tscn b/Levels/Main Menu.tscn index 25bff97..30be4b8 100644 --- a/Levels/Main Menu.tscn +++ b/Levels/Main Menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=2] +[gd_scene load_steps=21 format=2] [ext_resource path="res://Assets/bitmgothic.medium.ttf" type="DynamicFontData" id=1] [ext_resource path="res://Assets/Themes/Classic311/Classic311.tres" type="Theme" id=2] @@ -12,6 +12,9 @@ [ext_resource path="res://Levels/Settings.tscn" type="PackedScene" id=10] [ext_resource path="res://Assets/Sprites/Settings hovered.png" type="Texture" id=11] [ext_resource path="res://Assets/Sprites/Settings.png" type="Texture" id=12] +[ext_resource path="res://Assets/Sprites/Leaderboard button hovered-export.png" type="Texture" id=13] +[ext_resource path="res://Assets/Sprites/Leaderboard button-export.png" type="Texture" id=14] +[ext_resource path="res://Assets/Sounds/Menu Navigate.ogg" type="AudioStream" id=15] [sub_resource type="Animation" id=1] resource_name = "FadeIn" @@ -55,10 +58,10 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 1.2, 1.5 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.7, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1 ), "update": 0, -"values": [ Vector2( 300, 0 ), Vector2( 20, 0 ) ] +"values": [ Vector2( 250, 0 ), Vector2( 300, 0 ), Vector2( 20, 0 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Mancer:rect_position") @@ -67,10 +70,10 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 1.2, 1.5 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0, 0.7, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1 ), "update": 0, -"values": [ Vector2( -300, 27 ), Vector2( 20, 27 ) ] +"values": [ Vector2( -250, 27 ), Vector2( -300, 27 ), Vector2( 20, 27 ) ] } [sub_resource type="DynamicFont" id=4] @@ -121,11 +124,23 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Leaderboard" type="TextureButton" parent="."] +margin_left = 100.211 +margin_top = 115.603 +margin_right = 736.211 +margin_bottom = 185.603 +rect_scale = Vector2( 0.2, 0.2 ) +texture_normal = ExtResource( 14 ) +texture_hover = ExtResource( 13 ) +__meta__ = { +"_edit_use_anchors_": false +} + [node name="Quit" type="TextureButton" parent="."] -margin_left = 128.879 -margin_top = 113.867 -margin_right = 428.879 -margin_bottom = 213.867 +margin_left = 130.293 +margin_top = 135.348 +margin_right = 430.293 +margin_bottom = 235.348 rect_scale = Vector2( 0.2, 0.2 ) texture_normal = ExtResource( 4 ) texture_hover = ExtResource( 7 ) @@ -143,8 +158,8 @@ __meta__ = { } [node name="Debug" type="Label" parent="."] -margin_left = 300.0 -margin_right = 580.0 +margin_left = 20.0 +margin_right = 300.0 margin_bottom = 27.0 custom_fonts/font = SubResource( 4 ) custom_colors/font_color = Color( 0.207843, 0.207843, 0.380392, 1 ) @@ -157,9 +172,9 @@ __meta__ = { } [node name="Mancer" type="Label" parent="."] -margin_left = -300.0 +margin_left = 20.0 margin_top = 27.0 -margin_right = -19.9998 +margin_right = 300.0 margin_bottom = 54.0 custom_fonts/font = SubResource( 5 ) custom_colors/font_color = Color( 0.207843, 0.207843, 0.380392, 1 ) @@ -189,9 +204,16 @@ __meta__ = { stream = ExtResource( 9 ) [node name="SettingsDialog" parent="." instance=ExtResource( 10 )] -visible = false + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 15 ) [connection signal="animation_finished" from="MenuAnimPlayer" to="." method="_on_MenuAnimPlayer_animation_finished"] +[connection signal="mouse_entered" from="Start" to="." method="_button_hovered"] [connection signal="pressed" from="Start" to="." method="_on_Start_pressed"] +[connection signal="mouse_entered" from="Settings" to="." method="_button_hovered"] [connection signal="pressed" from="Settings" to="." method="_on_Settings_pressed"] +[connection signal="mouse_entered" from="Leaderboard" to="." method="_button_hovered"] +[connection signal="pressed" from="Leaderboard" to="." method="_on_Leaderboard_pressed"] +[connection signal="mouse_entered" from="Quit" to="." method="_button_hovered"] [connection signal="pressed" from="Quit" to="." method="_on_Quit_pressed"] [connection signal="about_to_show" from="ConnectionFailedDialog" to="ConnectionFailedDialog" method="ConnectionFailedDialog_AboutToShow"] diff --git a/Levels/Menu.cs b/Levels/Menu.cs index 61d6b08..95f20ca 100644 --- a/Levels/Menu.cs +++ b/Levels/Menu.cs @@ -11,11 +11,10 @@ public override void _EnterTree() GetNode("MenuAnimPlayer").Play("Transition"); } - public override void _ExitTree() + private void _button_hovered() { - GetNode("/root/BackgroundMusic/MenuMusic").Stop(); + GetNode("AudioStreamPlayer").Play(); } - private void _on_Start_pressed() { if (((RichPresence)GetNode("/root/RichPresence")).Client.CurrentUser != null) @@ -35,6 +34,10 @@ private void _on_Settings_pressed() GetNode("SettingsDialog").PopupCentered(); } + private void _on_Leaderboard_pressed() + { + GetTree().ChangeScene("res://Levels/Leaderboard.tscn"); + } private void _on_Quit_pressed() { @@ -49,6 +52,7 @@ private void _on_MenuAnimPlayer_animation_finished(string animName) } if (animName == "FadeOut") { + GetNode("/root/BackgroundMusic/MenuMusic").Stop(); GetTree().ChangeScene("res://Levels/Arena.tscn"); } if (animName == "Transition") diff --git a/Levels/Settings.tscn b/Levels/Settings.tscn index afb9a48..e2c2946 100644 --- a/Levels/Settings.tscn +++ b/Levels/Settings.tscn @@ -3,7 +3,6 @@ [ext_resource path="res://Levels/Settings.cs" type="Script" id=1] [node name="SettingsDialog" type="WindowDialog"] -visible = true margin_left = 229.803 margin_top = 130.051 margin_right = 478.803 diff --git a/Objects/Enemies/Computer/Computer.tscn b/Objects/Enemies/Computer/Computer.tscn index 1c6732f..5ed9c3d 100644 --- a/Objects/Enemies/Computer/Computer.tscn +++ b/Objects/Enemies/Computer/Computer.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=8 format=2] -[ext_resource path="res://Assets/Sprites/0x72_16x16DungeonTileset.v3.png" type="Texture" id=1] +[ext_resource path="res://Assets/Sprites/Entities/Computer SPriteSheet.png" type="Texture" id=1] [ext_resource path="res://Objects/Enemies/Computer/Entity.cs" type="Script" id=2] [ext_resource path="res://Objects/Health.cs" type="Script" id=3] @@ -10,6 +10,42 @@ extents = Vector2( 4.22134, 7.99921 ) [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 5.12251, 9.10345 ) +[sub_resource type="Animation" id=3] +resource_name = "Idle" +length = 0.6 +loop = true +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.175, 0.375, 0.575 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 8, 9, 10, 11 ] +} + +[sub_resource type="Animation" id=4] +resource_name = "Shoot" +length = 1.5 +loop = true +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.175, 0.55, 0.75, 0.95, 1.15, 1.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4, 5, 6 ] +} + [node name="Computer" type="KinematicBody2D" groups=[ "enemy", ]] @@ -19,9 +55,9 @@ script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] texture = ExtResource( 1 ) -vframes = 16 -hframes = 16 -frame = 147 +vframes = 3 +hframes = 4 +frame = 3 [node name="CollisionPolygon2D" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) @@ -127,6 +163,10 @@ MaxHealth = 8 [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] position = Vector2( -0.140469, 0.421399 ) scale = Vector2( 0.55519, 0.95786 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/Idle = SubResource( 3 ) +anims/Shoot = SubResource( 4 ) [connection signal="timeout" from="ShootTimer" to="." method="ShootTimer_timeout"] [connection signal="body_entered" from="Hitbox" to="." method="Hitbox_BodyEntered"] [connection signal="screen_entered" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_entered"] diff --git a/Objects/Enemies/Computer/Entity.cs b/Objects/Enemies/Computer/Entity.cs index debf56c..8de741c 100644 --- a/Objects/Enemies/Computer/Entity.cs +++ b/Objects/Enemies/Computer/Entity.cs @@ -16,11 +16,13 @@ public class Entity : KinematicBody2D private int _bulletSpeed = 90; public override void _Ready() { + GetNode("AnimationPlayer").Play("Idle"); GetNode("Health").Connect(nameof(Health.HealthChanged), this, nameof(OnHealthChanged)); } private void ShootTimer_timeout() { + GetNode("AnimationPlayer").Play("Shoot"); GetNode("ShootTimer").Stop(); if(_canShoot) SpawnBullet(); @@ -30,6 +32,7 @@ private void ShootTimer_timeout() _shots = 0; GetNode("ShootTimer").WaitTime = (float)(_random.NextDouble() * (6 - .95) + .95); GetNode("ShootTimer").Start(); + GetNode("AnimationPlayer").Play("Idle"); } else { diff --git a/Objects/Enemies/Cultist/Cultist.tscn b/Objects/Enemies/Cultist/Cultist.tscn index b30cb98..fa1c590 100644 --- a/Objects/Enemies/Cultist/Cultist.tscn +++ b/Objects/Enemies/Cultist/Cultist.tscn @@ -1,13 +1,30 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Assets/Sprites/Entities/Cultist SpriteSheet.png" type="Texture" id=1] [ext_resource path="res://Objects/Enemies/Cultist/States/Teleport.cs" type="Script" id=2] [ext_resource path="res://Objects/Enemies/Cultist/Entity.cs" type="Script" id=3] [ext_resource path="res://Objects/Health.cs" type="Script" id=4] [ext_resource path="res://Objects/Enemies/Cultist/States/Shoot.cs" type="Script" id=5] +[ext_resource path="res://Assets/Sounds/NANI.ogg" type="AudioStream" id=6] [sub_resource type="Animation" id=1] -resource_name = "Chase" +resource_name = "Appear" +length = 0.7 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.65 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 16, 17, 18, 19, 20, 21, 22 ] +} + +[sub_resource type="Animation" id=2] length = 0.65 loop = true step = 0.025 @@ -24,6 +41,23 @@ tracks/0/keys = { "values": [ 0, 1, 2, 3 ] } +[sub_resource type="Animation" id=3] +resource_name = "Disappear" +length = 1.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ] +} + [node name="Cultist" type="KinematicBody2D" groups=[ "enemy", ]] @@ -35,11 +69,13 @@ script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] position = Vector2( 0.201126, -0.0835648 ) texture = ExtResource( 1 ) -hframes = 4 +vframes = 4 +hframes = 6 +frame = 1 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] -position = Vector2( -7.79887, -8.08356 ) -polygon = PoolVector2Array( 13, 15, 12, 16, 3, 16, 2, 5, 2, 3, 4, 1, 12, 1, 13, 2 ) +position = Vector2( -8.52704, 0.735233 ) +polygon = PoolVector2Array( 12.713, 15.0602, 11.8984, 15.6908, 3.17408, 15.796, 2.17552, 4.94313, 2.31877, 3.07861, 4.12595, 1.1996, 11.9578, 1.07589, 12.8507, 2.06802 ) [node name="BulletSpawn" type="Node2D" parent="."] @@ -58,7 +94,7 @@ script = ExtResource( 5 ) wait_time = 0.05 [node name="CooldownTimer" type="Timer" parent="States/Shoot"] -wait_time = 0.6 +wait_time = 0.8 [node name="Teleport" type="Node" parent="States"] script = ExtResource( 2 ) @@ -67,11 +103,18 @@ script = ExtResource( 2 ) collision_layer = 2 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hitbox"] -position = Vector2( -7.79887, -8.08356 ) -polygon = PoolVector2Array( 13, 15, 12, 16, 3, 16, 2, 5, 2, 3, 4, 1, 12, 1, 13, 2 ) +position = Vector2( -8.50639, 0.649053 ) +polygon = PoolVector2Array( 13, 15, 12, 16, 3, 16, 2, 5, 2.11948, 3.07127, 4, 1, 12, 1, 13, 2 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/Chase = SubResource( 1 ) +anims/Appear = SubResource( 1 ) +anims/Chase = SubResource( 2 ) +anims/Disappear = SubResource( 3 ) + +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource( 6 ) +volume_db = 0.9 [connection signal="timeout" from="States/Shoot/ShootTimer" to="States/Shoot" method="ShootTimer_timeout"] [connection signal="timeout" from="States/Shoot/CooldownTimer" to="States/Shoot" method="CooldownTimer_timeout"] [connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="States/Teleport" method="_on_AnimationPlayer_finished"] diff --git a/Objects/Enemies/Cultist/States/Shoot.cs b/Objects/Enemies/Cultist/States/Shoot.cs index f15f944..6d19e21 100644 --- a/Objects/Enemies/Cultist/States/Shoot.cs +++ b/Objects/Enemies/Cultist/States/Shoot.cs @@ -20,6 +20,7 @@ public override void Enter(KinematicBody2D host) { _shots = 0; _host = host; + host.GetNode("AnimationPlayer").Play("Chase"); _host.GetNode("BulletSpawn").Rotation = new Vector2(_target.Position.x - _host.Position.x, _target.Position.y - _host.Position.y).Angle(); GetNode("ShootTimer").Start(); diff --git a/Objects/Enemies/Cultist/States/Teleport.cs b/Objects/Enemies/Cultist/States/Teleport.cs index 559ed43..b273d20 100644 --- a/Objects/Enemies/Cultist/States/Teleport.cs +++ b/Objects/Enemies/Cultist/States/Teleport.cs @@ -5,16 +5,31 @@ namespace Debugmancer.Objects.Enemies.Cultist.States public class Teleport : State { private KinematicBody2D _target; + private KinematicBody2D _host; public void Init(KinematicBody2D target) { _target = target; } + private void _on_AnimationPlayer_finished(string animName) + { + if (animName == "Disappear") + { + _host.GetNode("AnimationPlayer").Play("Appear"); + _host.Position = ((Player.Entity)_target).ScentTrail[0].Position; + } + if (animName == "Appear") + { + EmitSignal(nameof(Finished), "Shoot"); + } + } + public override void Enter(KinematicBody2D host) { - host.Position = ((Player.Entity)_target).ScentTrail[0].Position; - EmitSignal(nameof(Finished), "Shoot"); + _host = host; + host.GetNode("AudioStreamPlayer2D").Play(); + host.GetNode("AnimationPlayer").Play("Disappear"); } public override void Exit(KinematicBody2D host) diff --git a/Objects/Enemies/Roach/Roach.tscn b/Objects/Enemies/Roach/Roach.tscn index 13118a3..21fe3f6 100644 --- a/Objects/Enemies/Roach/Roach.tscn +++ b/Objects/Enemies/Roach/Roach.tscn @@ -8,18 +8,19 @@ [ext_resource path="res://Objects/Enemies/Roach/States/Idle.cs" type="Script" id=6] [ext_resource path="res://Objects/Enemies/Roach/States/Wander.cs" type="Script" id=7] -[sub_resource type="Animation" id=1] -length = 0.5 +[sub_resource type="Animation" id=3] +resource_name = "Idle" +length = 0.6 loop = true step = 0.05 tracks/0/type = "value" -tracks/0/path = NodePath("../Roach/Roach3:frame") +tracks/0/path = NodePath("Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.15, 0.3, 0.45 ), +"times": PoolRealArray( 0, 0.15, 0.35, 0.5 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2, 3 ] @@ -55,7 +56,7 @@ position = Vector2( 0, 0.0936432 ) texture = ExtResource( 1 ) vframes = 2 hframes = 4 -frame = 4 +frame = 2 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] position = Vector2( -8, -23.9064 ) @@ -100,10 +101,12 @@ script = ExtResource( 7 ) wait_time = 1.3 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/Idle = SubResource( 1 ) +anims/Idle = SubResource( 3 ) anims/Walk = SubResource( 2 ) [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] +position = Vector2( -1.21015, -0.157846 ) +scale = Vector2( 0.601877, 0.679046 ) [connection signal="body_entered" from="Hitbox" to="." method="Hitbox_BodyEntered"] [connection signal="timeout" from="States/Chase/ChaseTimer" to="States/Chase" method="_on_ChaseTimer_timeout"] [connection signal="timeout" from="States/Idle/IdleTimer" to="States/Idle" method="_on_IdleTimer_timeout"] diff --git a/Objects/Enemies/Roach/States/Chase.cs b/Objects/Enemies/Roach/States/Chase.cs index ead2332..a94fdf2 100644 --- a/Objects/Enemies/Roach/States/Chase.cs +++ b/Objects/Enemies/Roach/States/Chase.cs @@ -27,7 +27,7 @@ public void Init(Player.Entity target) public override void Enter(KinematicBody2D host) { - + host.GetNode("AnimationPlayer").Play("Walk"); } public override void Exit(KinematicBody2D host) { diff --git a/Objects/Enemies/Roach/States/Idle.cs b/Objects/Enemies/Roach/States/Idle.cs index 9f9c7d4..d694133 100644 --- a/Objects/Enemies/Roach/States/Idle.cs +++ b/Objects/Enemies/Roach/States/Idle.cs @@ -17,6 +17,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { _idleTimer.Start(); + host.GetNode("AnimationPlayer").Play("Idle"); } public override void Exit(KinematicBody2D host) diff --git a/Objects/Enemies/Roach/States/Wander.cs b/Objects/Enemies/Roach/States/Wander.cs index 7033a22..2eaa4ed 100644 --- a/Objects/Enemies/Roach/States/Wander.cs +++ b/Objects/Enemies/Roach/States/Wander.cs @@ -19,6 +19,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { + host.GetNode("AnimationPlayer").Play("Walk"); _wanderTimer.Start(); _dir.x = _random.Next(-50, 50); _dir.y = _random.Next(-50, 50); diff --git a/Objects/Enemies/Spider/Entity.cs b/Objects/Enemies/Spider/Entity.cs index fedd91c..edd078f 100644 --- a/Objects/Enemies/Spider/Entity.cs +++ b/Objects/Enemies/Spider/Entity.cs @@ -23,7 +23,6 @@ public class Entity : KinematicBody2D public override void _Ready() { - GetNode("AnimationPlayer").Play("Chase"); StatesMap.Add("Chase", GetNode("States/Chase")); StatesMap.Add("Stagger", GetNode("States/Stagger")); StatesMap.Add("Idle", GetNode("States/Idle")); diff --git a/Objects/Enemies/Spider/Spider.tscn b/Objects/Enemies/Spider/Spider.tscn index bf0218e..330519a 100644 --- a/Objects/Enemies/Spider/Spider.tscn +++ b/Objects/Enemies/Spider/Spider.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Assets/Sprites/Entities/Spider SpriteSheet-export.png" type="Texture" id=1] [ext_resource path="res://Objects/Enemies/Spider/States/Stagger.cs" type="Script" id=2] @@ -25,6 +25,24 @@ tracks/0/keys = { "values": [ 0, 1, 2, 3 ] } +[sub_resource type="Animation" id=2] +resource_name = "Idle" +length = 1.3 +loop = true +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.325, 0.525, 0.675, 0.825, 0.975, 1.1, 1.225 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 4, 5, 6, 7, 8, 9, 10, 11 ] +} + [node name="Spider" type="KinematicBody2D" groups=[ "enemy", ]] @@ -36,6 +54,7 @@ script = ExtResource( 4 ) texture = ExtResource( 1 ) vframes = 3 hframes = 4 +frame = 7 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] position = Vector2( -12, -12 ) @@ -66,8 +85,6 @@ MaxHealth = 6 [node name="Chase" type="Node" parent="States"] script = ExtResource( 3 ) -Speed = 85 -SpaceOutChance = 6 [node name="ChaseTimer" type="Timer" parent="States/Chase"] wait_time = 1.3 @@ -88,6 +105,7 @@ wait_time = 2.0 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] anims/Chase = SubResource( 1 ) +anims/Idle = SubResource( 2 ) [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] position = Vector2( -0.327754, 0.23411 ) diff --git a/Objects/Enemies/Spider/States/Chase.cs b/Objects/Enemies/Spider/States/Chase.cs index ad5d3cc..84a3b6d 100644 --- a/Objects/Enemies/Spider/States/Chase.cs +++ b/Objects/Enemies/Spider/States/Chase.cs @@ -26,7 +26,7 @@ public void Init(Player.Entity target) public override void Enter(KinematicBody2D host) { - + host.GetNode("AnimationPlayer").Play("Chase"); } public override void Exit(KinematicBody2D host) { diff --git a/Objects/Enemies/Spider/States/Idle.cs b/Objects/Enemies/Spider/States/Idle.cs index 9530219..2295dbc 100644 --- a/Objects/Enemies/Spider/States/Idle.cs +++ b/Objects/Enemies/Spider/States/Idle.cs @@ -17,6 +17,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { + host.GetNode("AnimationPlayer").Play("Idle"); _idleTimer.Start(); } diff --git a/Objects/Enemies/Spider/States/Wander.cs b/Objects/Enemies/Spider/States/Wander.cs index b17899a..d404d81 100644 --- a/Objects/Enemies/Spider/States/Wander.cs +++ b/Objects/Enemies/Spider/States/Wander.cs @@ -19,6 +19,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { + host.GetNode("AnimationPlayer").Play("Chase"); _wanderTimer.Start(); _dir.x = _random.Next(-50, 50); _dir.y = _random.Next(-50, 50); diff --git a/Objects/Enemies/Void/Entity.cs b/Objects/Enemies/Void/Entity.cs index aab2779..c23afbe 100644 --- a/Objects/Enemies/Void/Entity.cs +++ b/Objects/Enemies/Void/Entity.cs @@ -22,7 +22,6 @@ public class Entity : KinematicBody2D public override void _Ready() { - GetNode("AnimationPlayer").Play("Chase"); StatesMap.Add("Chase", GetNode("States/Chase")); StatesMap.Add("Stagger", GetNode("States/Stagger")); StatesMap.Add("Idle", GetNode("States/Idle")); diff --git a/Objects/Enemies/Void/States/Chase.cs b/Objects/Enemies/Void/States/Chase.cs index 760195a..5c59668 100644 --- a/Objects/Enemies/Void/States/Chase.cs +++ b/Objects/Enemies/Void/States/Chase.cs @@ -27,7 +27,7 @@ public void Init(Player.Entity target) public override void Enter(KinematicBody2D host) { - + host.GetNode("AnimationPlayer").Play("Chase"); } public override void Exit(KinematicBody2D host) { diff --git a/Objects/Enemies/Void/States/Idle.cs b/Objects/Enemies/Void/States/Idle.cs index e404e44..f8def8b 100644 --- a/Objects/Enemies/Void/States/Idle.cs +++ b/Objects/Enemies/Void/States/Idle.cs @@ -18,6 +18,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { + host.GetNode("AnimationPlayer").Play("Idle"); _idleTimer.Start(); } diff --git a/Objects/Enemies/Void/States/Wander.cs b/Objects/Enemies/Void/States/Wander.cs index 87b64d6..70c5c4c 100644 --- a/Objects/Enemies/Void/States/Wander.cs +++ b/Objects/Enemies/Void/States/Wander.cs @@ -19,6 +19,7 @@ public override void _Ready() public override void Enter(KinematicBody2D host) { + host.GetNode("AnimationPlayer").Play("Chase"); _wanderTimer.Start(); _dir.x = _random.Next(-50, 50); _dir.y = _random.Next(-50, 50); diff --git a/Objects/Enemies/Void/Void.tscn b/Objects/Enemies/Void/Void.tscn index 916e3ca..26a0ebe 100644 --- a/Objects/Enemies/Void/Void.tscn +++ b/Objects/Enemies/Void/Void.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Assets/Sprites/Entities/SpriteSheet Void.png" type="Texture" id=1] [ext_resource path="res://Objects/Enemies/Void/States/Stagger.cs" type="Script" id=2] @@ -26,6 +26,23 @@ tracks/0/keys = { "values": [ 0, 1, 2, 3 ] } +[sub_resource type="Animation" id=2] +resource_name = "Idle" +loop = true +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.225, 0.375, 0.525, 0.675, 0.825, 0.95 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 4, 5, 6, 7, 8, 9, 10, 11 ] +} + [node name="Void" type="KinematicBody2D" groups=[ "enemy", ]] @@ -39,6 +56,7 @@ position = Vector2( 0.31498, 0 ) texture = ExtResource( 1 ) vframes = 3 hframes = 4 +frame = 9 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] position = Vector2( -7.64079, -7.85659 ) @@ -87,6 +105,7 @@ script = ExtResource( 6 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] anims/Chase = SubResource( 1 ) +anims/Idle = SubResource( 2 ) [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] position = Vector2( -0.648915, 0.147481 ) diff --git a/Objects/Gun.cs b/Objects/Gun.cs index c868b13..f61efee 100644 --- a/Objects/Gun.cs +++ b/Objects/Gun.cs @@ -23,6 +23,7 @@ public void Fire() { if (_canShoot && Globals.Energy - 8 > 0) { + GetNode("AudioStreamPlayer").Play(); Random random = new Random(); RigidBody2D bulletInstance = random.Next(1, 10) > Globals.CritChance ? (RigidBody2D)Bullet.Instance() : (RigidBody2D)CritBullet.Instance(); bulletInstance.Position = GetNode("GunPoint").GlobalPosition; diff --git a/Objects/Gun.tscn b/Objects/Gun.tscn index e1c77f9..e05ebb9 100644 --- a/Objects/Gun.tscn +++ b/Objects/Gun.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://Assets/Sprites/gun.png" type="Texture" id=1] [ext_resource path="res://Objects/Gun.cs" type="Script" id=2] +[ext_resource path="res://Assets/Sounds/sfx-weapon-singleshot2.ogg" type="AudioStream" id=3] [node name="Gun" type="Sprite"] scale = Vector2( 0.02, 0.02 ) @@ -13,4 +14,7 @@ position = Vector2( 208.768, -90.3218 ) [node name="RegenTimer" type="Timer" parent="."] autostart = true + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) [connection signal="timeout" from="RegenTimer" to="." method="_on_RegenTimer_timeout"] diff --git a/Objects/Pause.cs b/Objects/Pause.cs index b22c91c..de7a4ee 100644 --- a/Objects/Pause.cs +++ b/Objects/Pause.cs @@ -19,7 +19,9 @@ public void _on_ResumeButton_button_up() } public void _on_QuitButton_button_up() { - + GetNode("/root/BackgroundMusic/MenuMusic").Play(12.47f); + GetTree().Paused = false; + GetTree().ChangeScene("res://Levels/Main Menu.tscn"); } } } diff --git a/Objects/Pause.tscn b/Objects/Pause.tscn index 4594045..a6ceb05 100644 --- a/Objects/Pause.tscn +++ b/Objects/Pause.tscn @@ -90,4 +90,4 @@ __meta__ = { "_edit_use_anchors_": false } [connection signal="button_up" from="Pause/PauseBox/ResumeButton" to="Pause" method="_on_ResumeButton_button_up"] -[connection signal="button_up" from="Pause/PauseBox/QuitButton" to="Pause" method="_on_QuitButton_button_up"] +[connection signal="pressed" from="Pause/PauseBox/QuitButton" to="Pause" method="_on_QuitButton_button_up"]