diff --git a/AudioTool.gd b/AudioTool.gd new file mode 100644 index 0000000..be503d1 --- /dev/null +++ b/AudioTool.gd @@ -0,0 +1,4 @@ +extends Node + + +func diff --git a/assets/sounds/CARTOON_Boing_mono.wav b/assets/sounds/CARTOON_Boing_mono.wav deleted file mode 100644 index 850c98b..0000000 Binary files a/assets/sounds/CARTOON_Boing_mono.wav and /dev/null differ diff --git a/assets/sounds/CARTOON_Boing_mono.wav.import b/assets/sounds/CARTOON_Boing_mono.wav.import deleted file mode 100644 index 71b56d4..0000000 --- a/assets/sounds/CARTOON_Boing_mono.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/CARTOON_Boing_mono.wav-81d92ba0a26e12caac0c691ba7bd8dae.sample" - -[deps] - -source_file="res://assets/sounds/CARTOON_Boing_mono.wav" -dest_files=[ "res://.import/CARTOON_Boing_mono.wav-81d92ba0a26e12caac0c691ba7bd8dae.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav b/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav deleted file mode 100644 index 9f85a0a..0000000 Binary files a/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav and /dev/null differ diff --git a/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav.import b/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav.import deleted file mode 100644 index 8c62b8f..0000000 --- a/assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav-e9fdccf3dd8981f444963ea286d10a66.sample" - -[deps] - -source_file="res://assets/sounds/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav" -dest_files=[ "res://.import/CHARGE_Sci-Fi_High_Pass_Sweep_12_Semi_Up_1000ms_stereo.wav-e9fdccf3dd8981f444963ea286d10a66.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav b/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav deleted file mode 100644 index 0ca07b3..0000000 Binary files a/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav and /dev/null differ diff --git a/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav.import b/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav.import deleted file mode 100644 index b5f9dfd..0000000 --- a/assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav-5af2adaf3db9d036f376f5fcfbebb90f.sample" - -[deps] - -source_file="res://assets/sounds/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav" -dest_files=[ "res://.import/CHARGE_Servo_24_Semi_Down_1000ms_stereo.wav-5af2adaf3db9d036f376f5fcfbebb90f.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/EpsonConfirm.ogg b/assets/sounds/EpsonConfirm.ogg deleted file mode 100644 index f04339c..0000000 Binary files a/assets/sounds/EpsonConfirm.ogg and /dev/null differ diff --git a/assets/sounds/EpsonConfirm.ogg.import b/assets/sounds/EpsonConfirm.ogg.import deleted file mode 100644 index 6c3ac1b..0000000 --- a/assets/sounds/EpsonConfirm.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/EpsonConfirm.ogg-afcbf35268794be2a4b1abc7659589c6.oggstr" - -[deps] - -source_file="res://assets/sounds/EpsonConfirm.ogg" -dest_files=[ "res://.import/EpsonConfirm.ogg-afcbf35268794be2a4b1abc7659589c6.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/assets/sounds/EpsonStart.ogg b/assets/sounds/EpsonStart.ogg deleted file mode 100644 index 06d7e4a..0000000 Binary files a/assets/sounds/EpsonStart.ogg and /dev/null differ diff --git a/assets/sounds/EpsonStart.ogg.import b/assets/sounds/EpsonStart.ogg.import deleted file mode 100644 index 965013f..0000000 --- a/assets/sounds/EpsonStart.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/EpsonStart.ogg-cf6baaf875194cd4e5ab013852eadd9b.oggstr" - -[deps] - -source_file="res://assets/sounds/EpsonStart.ogg" -dest_files=[ "res://.import/EpsonStart.ogg-cf6baaf875194cd4e5ab013852eadd9b.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav b/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav deleted file mode 100644 index 0357071..0000000 Binary files a/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav and /dev/null differ diff --git a/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav.import b/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav.import deleted file mode 100644 index e5bf587..0000000 --- a/assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav-6edde518b74de309deea3948759e321a.sample" - -[deps] - -source_file="res://assets/sounds/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav" -dest_files=[ "res://.import/FOOTSTEP_Trainers_Snow_Loose_Walk_Slow_RR1_mono.wav-6edde518b74de309deea3948759e321a.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/Feueralarm.ogg b/assets/sounds/Feueralarm.ogg deleted file mode 100644 index 053020c..0000000 Binary files a/assets/sounds/Feueralarm.ogg and /dev/null differ diff --git a/assets/sounds/Feueralarm.ogg.import b/assets/sounds/Feueralarm.ogg.import deleted file mode 100644 index 1cb651f..0000000 --- a/assets/sounds/Feueralarm.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/Feueralarm.ogg-711b767a9b7329373d887d0a3749e3b3.oggstr" - -[deps] - -source_file="res://assets/sounds/Feueralarm.ogg" -dest_files=[ "res://.import/Feueralarm.ogg-711b767a9b7329373d887d0a3749e3b3.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav b/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav deleted file mode 100644 index f8f5e9d..0000000 Binary files a/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav and /dev/null differ diff --git a/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav.import b/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav.import deleted file mode 100644 index 122a5e0..0000000 --- a/assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav-c63e548b66db83b8da58c35640a35149.sample" - -[deps] - -source_file="res://assets/sounds/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav" -dest_files=[ "res://.import/LOTUS_FLUTE_Whistle_Down_Wobble_02_mono.wav-c63e548b66db83b8da58c35640a35149.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/Treffer.ogg b/assets/sounds/Treffer.ogg deleted file mode 100644 index cf93c25..0000000 Binary files a/assets/sounds/Treffer.ogg and /dev/null differ diff --git a/assets/sounds/Treffer.ogg.import b/assets/sounds/Treffer.ogg.import deleted file mode 100644 index 04b9a87..0000000 --- a/assets/sounds/Treffer.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/Treffer.ogg-5734bdf815cf89fe88da7e1754b8bf7b.oggstr" - -[deps] - -source_file="res://assets/sounds/Treffer.ogg" -dest_files=[ "res://.import/Treffer.ogg-5734bdf815cf89fe88da7e1754b8bf7b.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/assets/sounds/biup.wav b/assets/sounds/biup.wav deleted file mode 100644 index 4154a6f..0000000 Binary files a/assets/sounds/biup.wav and /dev/null differ diff --git a/assets/sounds/biup.wav.import b/assets/sounds/biup.wav.import deleted file mode 100644 index 54a32d2..0000000 --- a/assets/sounds/biup.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/biup.wav-56939945d1672e675020822b7ecc1e5b.sample" - -[deps] - -source_file="res://assets/sounds/biup.wav" -dest_files=[ "res://.import/biup.wav-56939945d1672e675020822b7ecc1e5b.sample" ] - -[params] - -force/8_bit=false -force/mono=true -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=true -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/assets/sounds/boingo.wav b/assets/sounds/boingo.wav deleted file mode 100644 index dcde66a..0000000 Binary files a/assets/sounds/boingo.wav and /dev/null differ diff --git a/assets/sounds/footsteps.ogg b/assets/sounds/footsteps.ogg new file mode 100644 index 0000000..c473933 Binary files /dev/null and b/assets/sounds/footsteps.ogg differ diff --git a/assets/sounds/footsteps.ogg.import b/assets/sounds/footsteps.ogg.import new file mode 100644 index 0000000..7b9eec5 --- /dev/null +++ b/assets/sounds/footsteps.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/footsteps.ogg-db9696a28bb451faa0ab0d3414320fd1.oggstr" + +[deps] + +source_file="res://assets/sounds/footsteps.ogg" +dest_files=[ "res://.import/footsteps.ogg-db9696a28bb451faa0ab0d3414320fd1.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/assets/sounds/grass 3 single step 3.txt b/assets/sounds/grass 3 single step 3.txt new file mode 100644 index 0000000..d80ab8c --- /dev/null +++ b/assets/sounds/grass 3 single step 3.txt @@ -0,0 +1 @@ +soniss gdc pack, ryk-sound, no attribution needed diff --git a/assets/sounds/grass 3 single step 3.wav b/assets/sounds/grass 3 single step 3.wav new file mode 100644 index 0000000..6de9d4b Binary files /dev/null and b/assets/sounds/grass 3 single step 3.wav differ diff --git a/assets/sounds/boingo.wav.import b/assets/sounds/grass 3 single step 3.wav.import similarity index 50% rename from assets/sounds/boingo.wav.import rename to assets/sounds/grass 3 single step 3.wav.import index f5d3116..9b43aa8 100644 --- a/assets/sounds/boingo.wav.import +++ b/assets/sounds/grass 3 single step 3.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/boingo.wav-47e169bf3365758b9af8575ec8c64b02.sample" +path="res://.import/grass 3 single step 3.wav-2f7d8073200559f99a8e0cf713050fbb.sample" [deps] -source_file="res://assets/sounds/boingo.wav" -dest_files=[ "res://.import/boingo.wav-47e169bf3365758b9af8575ec8c64b02.sample" ] +source_file="res://assets/sounds/grass 3 single step 3.wav" +dest_files=[ "res://.import/grass 3 single step 3.wav-2f7d8073200559f99a8e0cf713050fbb.sample" ] [params] diff --git a/assets/sounds/walkingsoundmaybe.ogg b/assets/sounds/walkingsoundmaybe.ogg deleted file mode 100644 index 004726c..0000000 Binary files a/assets/sounds/walkingsoundmaybe.ogg and /dev/null differ diff --git a/assets/sounds/walkingsoundmaybe.ogg.import b/assets/sounds/walkingsoundmaybe.ogg.import deleted file mode 100644 index d3b8252..0000000 --- a/assets/sounds/walkingsoundmaybe.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/walkingsoundmaybe.ogg-01e3269b8c8ef8a667739d9f368a91b3.oggstr" - -[deps] - -source_file="res://assets/sounds/walkingsoundmaybe.ogg" -dest_files=[ "res://.import/walkingsoundmaybe.ogg-01e3269b8c8ef8a667739d9f368a91b3.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/project.godot b/project.godot index 46ac1c2..22079ab 100644 --- a/project.godot +++ b/project.godot @@ -282,7 +282,7 @@ pause={ } ui_click={ "deadzone": 0.5, -"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"doubleclick":false,"script":null) ] } @@ -302,6 +302,7 @@ ui_click={ [physics] common/physics_fps=120 +common/physics_jitter_fix=0.8 2d/thread_model=0 2d/cell_size=100 common/physics_interpolation=true diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index 840f8e9..048362e 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -4,6 +4,7 @@ const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast onready var effect_player = $BlobbyActionEffects/AnimationPlayer +onready var scene_audio = $SceneAudio onready var death_shader = preload("res://src/Actors/Blobby/DeathShader.tres") onready var invincible_shader = preload("res://src/Actors/Blobby/InvincibleShader.tres") @@ -12,7 +13,6 @@ onready var player_state_machine = $BlobbyStateMachine onready var init_boost = player_state_machine.init_boost onready var init_boost_type = player_state_machine.init_boost_type - export var jump_buffer_filled := false var wall_touch_direction = 1 diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index 77f9d7b..8c1bd13 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=128 format=2] +[gd_scene load_steps=129 format=2] [ext_resource path="res://assets/effects/blobby-effects-spritesheet.png" type="Texture" id=1] [ext_resource path="res://src/Actors/Blobby/DeathShader.tres" type="Material" id=2] @@ -8,6 +8,7 @@ [ext_resource path="res://src/ThirdParty/Demo/IridescenceBall.tscn" type="PackedScene" id=6] [ext_resource path="res://assets/effects/run-dusting-left.png" type="Texture" id=7] [ext_resource path="res://assets/effects/jump-point.png" type="Texture" id=8] +[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=9] [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 14.9127, 5.98593 ) @@ -4196,6 +4197,8 @@ text = "Ihre Werbung" align = 1 valign = 1 +[node name="SceneAudio" parent="." instance=ExtResource( 9 )] + [node name="Listener2D" type="Listener2D" parent="."] current = true @@ -4400,11 +4403,9 @@ one_shot = true wait_time = 0.809 one_shot = true -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] - [connection signal="area_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_area_entered"] [connection signal="got_grounded" from="BlobbyStateMachine" to="." method="_on_Blobby_got_grounded"] [connection signal="timeout" from="BlobbyStateMachine/JumpBufferTimer" to="BlobbyStateMachine" method="_on_JumpBufferTimer_timeout"] [connection signal="timeout" from="InvincibilityTimer" to="." method="_on_InvincibilityTimer_timeout"] -[connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"] [connection signal="timeout" from="PitfallTimer" to="." method="die_for_real"] +[connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"] diff --git a/src/Actors/BlobbyCam.tscn b/src/Actors/BlobbyCam.tscn index 5f3c5fc..620e067 100644 --- a/src/Actors/BlobbyCam.tscn +++ b/src/Actors/BlobbyCam.tscn @@ -1031,7 +1031,6 @@ texture = ExtResource( 8 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] frames = SubResource( 7 ) -frame = 9 playing = true [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] diff --git a/src/Autoload/GlobalAudio.gd b/src/Autoload/GlobalAudio.gd index 32e7934..55b0515 100644 --- a/src/Autoload/GlobalAudio.gd +++ b/src/Autoload/GlobalAudio.gd @@ -3,7 +3,7 @@ onready var players: Dictionary = {} func play_scene_independent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, - singleton = false, start_time = 0.0, random_pitch = false) -> void: + singleton = false, start_time = 0.0, random_pitch = false, pitch = 1.0) -> void: if singleton && players.has(sound_name): return var disposable_player = AudioStreamPlayer.new() @@ -15,6 +15,7 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat disposable_player.stream = stream disposable_player.volume_db = attenuation disposable_player.bus = bus + disposable_player.pitch_scale = pitch disposable_player.play(start_time) disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)]) players[sound_name] = weakref(disposable_player) @@ -22,6 +23,14 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat func dispose_player(player: WeakRef) -> void: if !player.get_ref(): return player.get_ref().queue_free() + +func pause_scene_independent(sound_name: String): + if players.has(sound_name) && players[sound_name].get_ref(): + players[sound_name].set_stream_paused(true) + +func continue_scene_independent(sound_name: String): + if players.has(sound_name) && players[sound_name].get_ref(): + players[sound_name].set_stream_paused(false) func stop_scene_independent(sound_name: String): if players.has(sound_name) && players[sound_name].get_ref(): diff --git a/src/Levels/1 Tutorial Level.tscn b/src/Levels/1 Tutorial Level.tscn index 1ccd21c..ff9af9e 100644 --- a/src/Levels/1 Tutorial Level.tscn +++ b/src/Levels/1 Tutorial Level.tscn @@ -207,9 +207,6 @@ position = Vector2( -24.5, 0 ) unique_name_in_owner = true process_mode = 1 -[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] -frame = 1 - [node name="Blobby" parent="." instance=ExtResource( 7 )] unique_name_in_owner = true position = Vector2( -70, 1 ) diff --git a/src/Levels/2 Tutorial Level.tscn b/src/Levels/2 Tutorial Level.tscn index a2dc34b..9bd1745 100644 --- a/src/Levels/2 Tutorial Level.tscn +++ b/src/Levels/2 Tutorial Level.tscn @@ -1034,9 +1034,6 @@ unique_name_in_owner = true drag_margin_top = 0.1 drag_margin_bottom = 0.1 -[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] -frame = 3 - [node name="Blobby" parent="." instance=ExtResource( 8 )] unique_name_in_owner = true position = Vector2( -156, -51 ) diff --git a/src/Sounds/default_bus_layout.tres b/src/Sounds/default_bus_layout.tres index 6635562..31936a7 100644 --- a/src/Sounds/default_bus_layout.tres +++ b/src/Sounds/default_bus_layout.tres @@ -1,4 +1,4 @@ -[gd_resource type="AudioBusLayout" load_steps=11 format=2] +[gd_resource type="AudioBusLayout" load_steps=9 format=2] [sub_resource type="AudioEffectPitchShift" id=1] resource_name = "PitchShift" @@ -40,17 +40,8 @@ resource_name = "HighPassFilter" resource_name = "LowPassFilter" cutoff_hz = 3000.0 -[sub_resource type="AudioEffectDistortion" id=9] -resource_name = "Distortion" -mode = 4 -keep_hf_hz = 1000.0 -post_gain = -5.0 - -[sub_resource type="AudioEffectLowPassFilter" id=10] -resource_name = "LowPassFilter" - [resource] -bus/0/volume_db = -6.0206 +bus/0/volume_db = -10.4576 bus/1/name = "Music" bus/1/solo = false bus/1/mute = false @@ -85,13 +76,3 @@ bus/3/effect/1/effect = SubResource( 7 ) bus/3/effect/1/enabled = false bus/3/effect/2/effect = SubResource( 8 ) bus/3/effect/2/enabled = true -bus/4/name = "Blobby" -bus/4/solo = false -bus/4/mute = false -bus/4/bypass_fx = false -bus/4/volume_db = 0.0 -bus/4/send = "Master" -bus/4/effect/0/effect = SubResource( 9 ) -bus/4/effect/0/enabled = true -bus/4/effect/1/effect = SubResource( 10 ) -bus/4/effect/1/enabled = true diff --git a/src/StateMachines/BlobbyStateMachine.gd b/src/StateMachines/BlobbyStateMachine.gd index f1fca72..8c6fc43 100644 --- a/src/StateMachines/BlobbyStateMachine.gd +++ b/src/StateMachines/BlobbyStateMachine.gd @@ -4,9 +4,13 @@ signal got_grounded export var init_boost = false export var init_boost_type = "" + +export(String, FILE) var footstep_sound := "res://assets/sounds/footsteps.ogg" + onready var anim_player = parent.get_node("%BlobbymationPlayer") onready var anim_state_playback = parent.get_node("%BlobbymationTree").get("parameters/playback") onready var anim_tree = parent.get_node("%BlobbymationTree") +onready var scene_audio = parent.get_node("SceneAudio") onready var running_particles = parent.get_node("RunningParticles") onready var jump_point_particles = parent.get_node("JumpPointParticles") onready var run_dust_res = load("res://assets/effects/run-dusting.png") @@ -210,8 +214,8 @@ func _enter_state(new_state, old_state): if !["run", "walk", "idle", "duck"].has(old_state) && parent.is_on_floor(): emit_signal("got_grounded") - GlobalAudio.play_scene_independent("res://assets/sounds/landingMedHard.ogg", "Effects", - -15.0, false, 0.10, true) + scene_audio.play_parallel_sound("res://assets/sounds/landingMedHard.ogg", + -15.0, true, 1.0, 0.1) match new_state: @@ -222,6 +226,7 @@ func _enter_state(new_state, old_state): anim_state_playback.travel("idleTurn") else: anim_state_playback.travel("walking") + scene_audio.play_sound(footstep_sound, -3.0, true, 1.6) states.idle: anim_state_playback.travel("idling") states.duck: @@ -237,6 +242,7 @@ func _enter_state(new_state, old_state): anim_state_playback.travel("falling") states.run: anim_state_playback.travel("running") + scene_audio.play_sound(footstep_sound, -3.0, true, 2.0) states.wallslide: # TODO When the hitbox transforms from wallslide to idle, blobby hangs in the air and that triggers the wallslide on landing if(old_state != states.idle): @@ -244,9 +250,9 @@ func _enter_state(new_state, old_state): func _exit_state(_old_state, _new_state): + scene_audio.stop_sound() if(_old_state == "run"): running_particles.emitting = false - pass func _set_blendspaces_direction(value): running_particles.texture = run_dust_res if facing == -1 else run_dust_left_res diff --git a/src/ThirdParty/Demo/meshinstance.material b/src/ThirdParty/Demo/meshinstance.material index 4ccb859..abb3396 100644 Binary files a/src/ThirdParty/Demo/meshinstance.material and b/src/ThirdParty/Demo/meshinstance.material differ diff --git a/src/Utilities/SceneAudio.gd b/src/Utilities/SceneAudio.gd index a3658b1..d4f2f79 100644 --- a/src/Utilities/SceneAudio.gd +++ b/src/Utilities/SceneAudio.gd @@ -1,25 +1,58 @@ extends Node onready var players: Dictionary = {} +onready var static_player: AudioStreamPlayer = $StaticPlayer var disposable_player: AudioStreamPlayer +# Plays sound with the static player, interrupting sounds if currently playing +func play_sound(sound_name: String, attenuation: float = 0.0, random_pitch = false, + pitch = 1.0, start_time = 0.0, bus: String = "Effects", singleton = false) -> void: + # TODO is it bad to grab the stream each time? + var stream = GlobalState.sound_library[sound_name] + if random_pitch: + stream = AudioStreamRandomPitch.new() + stream.audio_stream = GlobalState.sound_library[sound_name] + static_player.stream = stream + static_player.volume_db = attenuation + static_player.bus = bus + static_player.pitch_scale = pitch + static_player.play(start_time) -func play_scene_dependent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, singleton = false) -> void: +func stop_sound(): + static_player.stop() + +# Mirrors the GlobalAudio Method which can play sounds across scenes +func play_parallel_sound(sound_name: String, attenuation: float = 0.0, random_pitch = false, + pitch = 1.0, start_time = 0.0, bus: String = "Effects", singleton = false) -> void: if singleton && players.has(sound_name): return - disposable_player = AudioStreamPlayer.new() + var disposable_player = AudioStreamPlayer.new() add_child(disposable_player) - disposable_player.stream = GlobalState.sound_library[sound_name] + var stream = GlobalState.sound_library[sound_name] + if random_pitch: + stream = AudioStreamRandomPitch.new() + stream.audio_stream = GlobalState.sound_library[sound_name] + disposable_player.stream = stream disposable_player.volume_db = attenuation disposable_player.bus = bus - disposable_player.play() - disposable_player.connect("finished", self, "dispose_player") - players[sound_name] = disposable_player + disposable_player.pitch_scale = pitch + disposable_player.play(start_time) + disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)]) + players[sound_name] = weakref(disposable_player) -func dispose_player(player: AudioStreamPlayer = disposable_player) -> void: - if player == null: return - player.queue_free() +func dispose_parallel_player(player: WeakRef) -> void: + if !player.get_ref(): return + player.get_ref().queue_free() + +func pause_parallel_sound(sound_name: String): + if players.has(sound_name) && players[sound_name].get_ref(): + players[sound_name].set_stream_paused(true) + +func continue_parallel_sound(sound_name: String): + if players.has(sound_name) && players[sound_name].get_ref(): + players[sound_name].set_stream_paused(false) -func stop_scene_dependent(sound_name: String): - if players.has(sound_name): - dispose_player(players[sound_name]) +func stop_parallel_sound(sound_name: String): + if players.has(sound_name) && players[sound_name].get_ref(): + dispose_parallel_player(players[sound_name]) players.erase(sound_name) + diff --git a/src/Utilities/SceneAudio.tscn b/src/Utilities/SceneAudio.tscn index 30257c6..a69675c 100644 --- a/src/Utilities/SceneAudio.tscn +++ b/src/Utilities/SceneAudio.tscn @@ -1,7 +1,12 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] [ext_resource path="res://src/Utilities/SceneAudio.gd" type="Script" id=1] +[ext_resource path="res://assets/sounds/footsteps.ogg" type="AudioStream" id=2] [node name="SceneAudio" type="Node"] pause_mode = 2 script = ExtResource( 1 ) + +[node name="StaticPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +pitch_scale = 1.62