From c06925b93769affcf0eeede02257e1e96bb92c6e Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 15 Aug 2025 15:51:11 -0600 Subject: [PATCH] Global UI sounds --- assets/sfx/ui/ui_bonk_v0.wav | 3 + assets/sfx/ui/ui_bonk_v0.wav.import | 24 ++++++ assets/sfx/ui/ui_cancel_v0.wav | 3 + assets/sfx/ui/ui_cancel_v0.wav.import | 24 ++++++ assets/sfx/ui/ui_confirm_v0.wav | 3 + assets/sfx/ui/ui_confirm_v0.wav.import | 24 ++++++ levels/ghost_ship/level/medbay/medbay.tscn | 80 +++++++++---------- project.godot | 1 + src/equipment/tool.gd | 4 +- src/equipment/wide_spray/wide_spray.gd | 3 +- .../global_sfx_manager/global_sfx_manager.gd | 6 ++ .../global_sfx_manager.gd.uid | 1 + .../global_sfx_manager.tscn | 27 +++++++ src/player/tool_mount.gd | 1 + src/props/interactive.gd | 3 +- src/ui/menus/pause_menu/pause_menu.gd | 8 ++ src/ui/menus/settings_menu/settings_menu.gd | 2 + .../volume_slider/volume_slider.tscn | 7 +- src/ui/menus/title_screen/title_screen.gd | 4 + src/world/world.gd | 2 + 20 files changed, 183 insertions(+), 47 deletions(-) create mode 100644 assets/sfx/ui/ui_bonk_v0.wav create mode 100644 assets/sfx/ui/ui_bonk_v0.wav.import create mode 100644 assets/sfx/ui/ui_cancel_v0.wav create mode 100644 assets/sfx/ui/ui_cancel_v0.wav.import create mode 100644 assets/sfx/ui/ui_confirm_v0.wav create mode 100644 assets/sfx/ui/ui_confirm_v0.wav.import create mode 100644 src/game/global_sfx_manager/global_sfx_manager.gd create mode 100644 src/game/global_sfx_manager/global_sfx_manager.gd.uid create mode 100644 src/game/global_sfx_manager/global_sfx_manager.tscn diff --git a/assets/sfx/ui/ui_bonk_v0.wav b/assets/sfx/ui/ui_bonk_v0.wav new file mode 100644 index 0000000..4cf721c --- /dev/null +++ b/assets/sfx/ui/ui_bonk_v0.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:751c83a18573d264a4317224ca4792d75ad013bd68a44aac622c4675911ec61c +size 57606 diff --git a/assets/sfx/ui/ui_bonk_v0.wav.import b/assets/sfx/ui/ui_bonk_v0.wav.import new file mode 100644 index 0000000..c63620d --- /dev/null +++ b/assets/sfx/ui/ui_bonk_v0.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b8l5atgau0qpb" +path="res://.godot/imported/ui_bonk_v0.wav-fa906781801c909c756b2754892ab852.sample" + +[deps] + +source_file="res://assets/sfx/ui/ui_bonk_v0.wav" +dest_files=["res://.godot/imported/ui_bonk_v0.wav-fa906781801c909c756b2754892ab852.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_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/sfx/ui/ui_cancel_v0.wav b/assets/sfx/ui/ui_cancel_v0.wav new file mode 100644 index 0000000..617bdb2 --- /dev/null +++ b/assets/sfx/ui/ui_cancel_v0.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62b4eac1cb29a4436f4559eca79536c6d2dd271d70c878ad7a30f8b6a2141994 +size 80778 diff --git a/assets/sfx/ui/ui_cancel_v0.wav.import b/assets/sfx/ui/ui_cancel_v0.wav.import new file mode 100644 index 0000000..dfe458a --- /dev/null +++ b/assets/sfx/ui/ui_cancel_v0.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://qua4yq6ceeax" +path="res://.godot/imported/ui_cancel_v0.wav-170eebd5b4f2bdde570cb0d1c9d62bb6.sample" + +[deps] + +source_file="res://assets/sfx/ui/ui_cancel_v0.wav" +dest_files=["res://.godot/imported/ui_cancel_v0.wav-170eebd5b4f2bdde570cb0d1c9d62bb6.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_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/assets/sfx/ui/ui_confirm_v0.wav b/assets/sfx/ui/ui_confirm_v0.wav new file mode 100644 index 0000000..93fd7f7 --- /dev/null +++ b/assets/sfx/ui/ui_confirm_v0.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d5d850f8b2d2ed5a7f405b64ce00a5a7a0e91d4e3676d7181f8a8096dec1a1c +size 86688 diff --git a/assets/sfx/ui/ui_confirm_v0.wav.import b/assets/sfx/ui/ui_confirm_v0.wav.import new file mode 100644 index 0000000..26c059b --- /dev/null +++ b/assets/sfx/ui/ui_confirm_v0.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cfj1o2mt8pc8e" +path="res://.godot/imported/ui_confirm_v0.wav-fe2ea1c80e92f57a670b33aa5ace2b7c.sample" + +[deps] + +source_file="res://assets/sfx/ui/ui_confirm_v0.wav" +dest_files=["res://.godot/imported/ui_confirm_v0.wav-fe2ea1c80e92f57a670b33aa5ace2b7c.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_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/levels/ghost_ship/level/medbay/medbay.tscn b/levels/ghost_ship/level/medbay/medbay.tscn index b92e1ab..8eb7f19 100644 --- a/levels/ghost_ship/level/medbay/medbay.tscn +++ b/levels/ghost_ship/level/medbay/medbay.tscn @@ -96,7 +96,7 @@ size = Vector3(0.8, 1, 1.5) [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_dwjsf"] data = PackedVector3Array(-0.4, 0.5, 0.75, 0.4, 0.5, 0.75, -0.4, -0.5, 0.75, 0.4, 0.5, 0.75, 0.4, -0.5, 0.75, -0.4, -0.5, 0.75, 0.4, 0.5, -0.75, -0.4, 0.5, -0.75, 0.4, -0.5, -0.75, -0.4, 0.5, -0.75, -0.4, -0.5, -0.75, 0.4, -0.5, -0.75, 0.4, 0.5, 0.75, 0.4, 0.5, -0.75, 0.4, -0.5, 0.75, 0.4, 0.5, -0.75, 0.4, -0.5, -0.75, 0.4, -0.5, 0.75, -0.4, 0.5, -0.75, -0.4, 0.5, 0.75, -0.4, -0.5, -0.75, -0.4, 0.5, 0.75, -0.4, -0.5, 0.75, -0.4, -0.5, -0.75, 0.4, 0.5, 0.75, -0.4, 0.5, 0.75, 0.4, 0.5, -0.75, -0.4, 0.5, 0.75, -0.4, 0.5, -0.75, 0.4, 0.5, -0.75, -0.4, -0.5, 0.75, 0.4, -0.5, 0.75, -0.4, -0.5, -0.75, 0.4, -0.5, 0.75, 0.4, -0.5, -0.75, -0.4, -0.5, -0.75) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yvs0w"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jnjru"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -122,7 +122,7 @@ _surfaces = [{ }] blend_shape_mode = 0 -[sub_resource type="ArrayMesh" id="ArrayMesh_jnjru"] +[sub_resource type="ArrayMesh" id="ArrayMesh_bnexv"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -131,7 +131,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_yvs0w"), +"material": SubResource("StandardMaterial3D_jnjru"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -141,7 +141,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bnexv"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p5an5"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -152,7 +152,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_p5an5"] +[sub_resource type="ArrayMesh" id="ArrayMesh_1syyw"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -161,7 +161,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_bnexv"), +"material": SubResource("StandardMaterial3D_p5an5"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -171,7 +171,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1syyw"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_loej8"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -182,7 +182,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_loej8"] +[sub_resource type="ArrayMesh" id="ArrayMesh_5abrm"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -191,7 +191,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_1syyw"), +"material": SubResource("StandardMaterial3D_loej8"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -201,7 +201,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5abrm"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t0ymk"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -212,7 +212,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_t0ymk"] +[sub_resource type="ArrayMesh" id="ArrayMesh_glbip"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -221,7 +221,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_5abrm"), +"material": SubResource("StandardMaterial3D_t0ymk"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -231,7 +231,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_glbip"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nqwfe"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -242,7 +242,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_nqwfe"] +[sub_resource type="ArrayMesh" id="ArrayMesh_h56f5"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -251,7 +251,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_glbip"), +"material": SubResource("StandardMaterial3D_nqwfe"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -261,7 +261,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h56f5"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gem8k"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -272,7 +272,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_gem8k"] +[sub_resource type="ArrayMesh" id="ArrayMesh_wr3ux"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -281,7 +281,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_h56f5"), +"material": SubResource("StandardMaterial3D_gem8k"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -291,7 +291,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wr3ux"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a7woh"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -302,7 +302,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_a7woh"] +[sub_resource type="ArrayMesh" id="ArrayMesh_l1qst"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -311,7 +311,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_wr3ux"), +"material": SubResource("StandardMaterial3D_a7woh"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -321,7 +321,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l1qst"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8ifew"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -332,7 +332,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_8ifew"] +[sub_resource type="ArrayMesh" id="ArrayMesh_klyoq"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -341,7 +341,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_l1qst"), +"material": SubResource("StandardMaterial3D_8ifew"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -351,7 +351,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_klyoq"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jmnef"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -362,7 +362,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_jmnef"] +[sub_resource type="ArrayMesh" id="ArrayMesh_7ip0j"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -371,7 +371,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_klyoq"), +"material": SubResource("StandardMaterial3D_jmnef"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -381,7 +381,7 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_u2hqf") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7ip0j"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w6w82"] resource_local_to_scene = true albedo_texture = ExtResource("13_glbip") metallic = 1.0 @@ -392,7 +392,7 @@ normal_texture = ExtResource("15_h56f5") ao_enabled = true texture_filter = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_w6w82"] +[sub_resource type="ArrayMesh" id="ArrayMesh_eorl6"] resource_local_to_scene = true _surfaces = [{ "aabb": AABB(-0.375, -0.25, -0.75, 0.75, 0.5, 1.5), @@ -401,7 +401,7 @@ _surfaces = [{ "index_count": 84, "index_data": PackedByteArray("FgANAAwADAANABcAFwANAA4ADgANABgAGAANAA8ADwANABkAGgAHAAIAAgAHABsAEAABABEAEQABABwAHQAAAAYABgAAAAMACQAUAAgACAAUABUAFQAUAAoACgAUAB4AHgAUAAsACwAUAB8AIAATAAUABQATAAQAIQAiACMAIwAiACQAJQASACYAJgASACcAKAApACoAKgApACsALAAtAC4ALgAtAC8A"), "lods": [0.108952, PackedByteArray("DAANAA4ADgANAA8AEAABABEAEAARAAYAEQAAAAYABgAAAAMAEQABAAIAAgABAAcABwASAAIABwATABIAEgATAAUABQATAAQACQAUAAgACAAUABUAFQAUAAoACgAUAAsA"), 0.261829, PackedByteArray("AAABAAIAAQAAAAYABgAAAAMAAgABAAcABwAEAAIAAgAEAAUACAAJAAoACgAJAAsA"), 0.524037, PackedByteArray("AAABAAIAAQAAAAMAAgABAAQAAgAEAAUA")], -"material": SubResource("StandardMaterial3D_7ip0j"), +"material": SubResource("StandardMaterial3D_w6w82"), "name": "Cube", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -1339,7 +1339,7 @@ skeleton = NodePath("") [node name="CrateLong" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.749907, 0.25, 4.05009) -mesh = SubResource("ArrayMesh_jnjru") +mesh = SubResource("ArrayMesh_bnexv") [node name="PhysCrateLong" parent="Props" instance=ExtResource("19_yvs0w")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0.25, -3.6) @@ -1347,39 +1347,39 @@ sleeping = true [node name="CrateLong2" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.749907, 0.75, 4.05009) -mesh = SubResource("ArrayMesh_p5an5") +mesh = SubResource("ArrayMesh_1syyw") [node name="CrateLong3" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(-4.37114e-08, 0.707107, -0.707107, 0, 0.707107, 0.707107, 1, 3.09086e-08, -3.09086e-08, 0.599813, 0.75, 4.05009) -mesh = SubResource("ArrayMesh_loej8") +mesh = SubResource("ArrayMesh_5abrm") [node name="CrateLong5" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, 3.93256, 0.25, -2.54991) -mesh = SubResource("ArrayMesh_t0ymk") +mesh = SubResource("ArrayMesh_glbip") [node name="CrateLong10" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -7.45058e-08, 0, 1, 0, 7.45058e-08, 0, 1, 3.93256, 0.25, -1.04991) -mesh = SubResource("ArrayMesh_nqwfe") +mesh = SubResource("ArrayMesh_h56f5") [node name="CrateLong6" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 0.75, -2.54991) -mesh = SubResource("ArrayMesh_gem8k") +mesh = SubResource("ArrayMesh_wr3ux") [node name="CrateLong11" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 0.75, -1.04991) -mesh = SubResource("ArrayMesh_a7woh") +mesh = SubResource("ArrayMesh_l1qst") [node name="CrateLong7" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 1.25, -2.54991) -mesh = SubResource("ArrayMesh_8ifew") +mesh = SubResource("ArrayMesh_klyoq") [node name="CrateLong8" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 1.75, -2.54991) -mesh = SubResource("ArrayMesh_jmnef") +mesh = SubResource("ArrayMesh_7ip0j") [node name="CrateLong9" parent="Props" instance=ExtResource("12_t0ymk")] transform = Transform3D(1, 0, -1.19209e-07, 0, 1, 0, 1.19209e-07, 0, 1, 3.93256, 2.25, -2.54991) -mesh = SubResource("ArrayMesh_w6w82") +mesh = SubResource("ArrayMesh_eorl6") [node name="FloatingDust" parent="." instance=ExtResource("17_wr3ux")] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 1.5, -4.5) diff --git a/project.godot b/project.godot index fd0642f..fd4e8e8 100644 --- a/project.godot +++ b/project.godot @@ -30,6 +30,7 @@ GameRuntime="*res://src/game/game_runtime.gd" ItemCatalog="*res://src/items/item_catalog.tscn" GameSettings="*res://src/game/game_settings.gd" TutorialManager="*res://src/game/tutorial/tutorial_manager/tutorial_manager.tscn" +GlobalSFXManager="*res://src/game/global_sfx_manager/global_sfx_manager.tscn" [debug] diff --git a/src/equipment/tool.gd b/src/equipment/tool.gd index 5335781..3a16c5b 100644 --- a/src/equipment/tool.gd +++ b/src/equipment/tool.gd @@ -18,8 +18,8 @@ func _idle() -> void: ## Toggles between this tool's normal & alternate modes func switch_mode() -> void: - # TODO: bonk if no mode switch is defined - pass + # bonk if no mode switch is defined + GlobalSFXManager.bonk.play() ## Called each frame that this tool is being fired. diff --git a/src/equipment/wide_spray/wide_spray.gd b/src/equipment/wide_spray/wide_spray.gd index 1fb800c..0b38b2a 100644 --- a/src/equipment/wide_spray/wide_spray.gd +++ b/src/equipment/wide_spray/wide_spray.gd @@ -24,8 +24,7 @@ func switch_mode() -> void: _horizontal = not _horizontal _busy = true else: - # TODO: bonk - pass + GlobalSFXManager.bonk.play() func _fire() -> void: diff --git a/src/game/global_sfx_manager/global_sfx_manager.gd b/src/game/global_sfx_manager/global_sfx_manager.gd new file mode 100644 index 0000000..efa6a64 --- /dev/null +++ b/src/game/global_sfx_manager/global_sfx_manager.gd @@ -0,0 +1,6 @@ +class_name GlobalSFXManagerType extends Node +## Global autoloaded singleton controller for global UI non-diegetic sounds + +@onready var confirm: AudioStreamPlayer = %Confirm +@onready var cancel: AudioStreamPlayer = %Cancel +@onready var bonk: AudioStreamPlayer = %Bonk diff --git a/src/game/global_sfx_manager/global_sfx_manager.gd.uid b/src/game/global_sfx_manager/global_sfx_manager.gd.uid new file mode 100644 index 0000000..0d2ef48 --- /dev/null +++ b/src/game/global_sfx_manager/global_sfx_manager.gd.uid @@ -0,0 +1 @@ +uid://bpaid8cfddrtp diff --git a/src/game/global_sfx_manager/global_sfx_manager.tscn b/src/game/global_sfx_manager/global_sfx_manager.tscn new file mode 100644 index 0000000..dfef569 --- /dev/null +++ b/src/game/global_sfx_manager/global_sfx_manager.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=5 format=3 uid="uid://dt27sg6y8luhe"] + +[ext_resource type="AudioStream" uid="uid://cfj1o2mt8pc8e" path="res://assets/sfx/ui/ui_confirm_v0.wav" id="1_wh46b"] +[ext_resource type="Script" uid="uid://bpaid8cfddrtp" path="res://src/game/global_sfx_manager/global_sfx_manager.gd" id="1_xjjma"] +[ext_resource type="AudioStream" uid="uid://qua4yq6ceeax" path="res://assets/sfx/ui/ui_cancel_v0.wav" id="2_xjjma"] +[ext_resource type="AudioStream" uid="uid://b8l5atgau0qpb" path="res://assets/sfx/ui/ui_bonk_v0.wav" id="3_xl3ms"] + +[node name="GlobalSFXManager" type="Node"] +script = ExtResource("1_xjjma") + +[node name="Confirm" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("1_wh46b") +volume_db = -16.0 +bus = &"SFX" + +[node name="Cancel" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("2_xjjma") +volume_db = -16.0 +bus = &"SFX" + +[node name="Bonk" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("3_xl3ms") +volume_db = -16.0 +bus = &"SFX" diff --git a/src/player/tool_mount.gd b/src/player/tool_mount.gd index 6d737b9..ef0feb0 100644 --- a/src/player/tool_mount.gd +++ b/src/player/tool_mount.gd @@ -37,6 +37,7 @@ func get_active() -> Tool: ## If the tool is not unlocked and `force` is false, this will have no effect. func set_active(tool: Tool, force: bool = false) -> void: if not force and not tool.unlocked(): + GlobalSFXManager.bonk.play() return for c: Node3D in get_children(): diff --git a/src/props/interactive.gd b/src/props/interactive.gd index e2c452f..582114f 100644 --- a/src/props/interactive.gd +++ b/src/props/interactive.gd @@ -38,4 +38,5 @@ func deselect() -> void: func activate() -> void: if enabled: activated.emit() - # TODO: bonk + else: + GlobalSFXManager.bonk.play() diff --git a/src/ui/menus/pause_menu/pause_menu.gd b/src/ui/menus/pause_menu/pause_menu.gd index f44a4e9..21151f9 100644 --- a/src/ui/menus/pause_menu/pause_menu.gd +++ b/src/ui/menus/pause_menu/pause_menu.gd @@ -39,11 +39,13 @@ func _hide() -> void: func resume() -> void: + GlobalSFXManager.confirm.play() Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) queue_free() func settings() -> void: + GlobalSFXManager.confirm.play() var instance: Control = settings_scene.instantiate() settings_container.add_child(instance) instance.tree_exited.connect(_unhide) @@ -51,26 +53,32 @@ func settings() -> void: func quit() -> void: + GlobalSFXManager.confirm.play() quit_confirm.show() func cancel_quit() -> void: + GlobalSFXManager.cancel.play() quit_confirm.hide() func confirm_quit() -> void: + GlobalSFXManager.confirm.play() get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) func end_game() -> void: + GlobalSFXManager.confirm.play() end_game_confirm.show() func cancel_end_game() -> void: + GlobalSFXManager.cancel.play() end_game_confirm.hide() func confirm_end_game() -> void: + GlobalSFXManager.confirm.play() # TODO transition Game.instance.queue_scene(title_scene) diff --git a/src/ui/menus/settings_menu/settings_menu.gd b/src/ui/menus/settings_menu/settings_menu.gd index 60c8004..6072ef4 100644 --- a/src/ui/menus/settings_menu/settings_menu.gd +++ b/src/ui/menus/settings_menu/settings_menu.gd @@ -52,6 +52,7 @@ func populate_volume_mixers() -> void: ## Close menu without applying settings. func cancel() -> void: + GlobalSFXManager.cancel.play() queue_free() @@ -72,6 +73,7 @@ func save_settings() -> void: ## Apply settings and close menu. func accept() -> void: + GlobalSFXManager.confirm.play() apply() save_settings() queue_free() diff --git a/src/ui/menus/settings_menu/volume_slider/volume_slider.tscn b/src/ui/menus/settings_menu/volume_slider/volume_slider.tscn index 9ed19e8..7057e8f 100644 --- a/src/ui/menus/settings_menu/volume_slider/volume_slider.tscn +++ b/src/ui/menus/settings_menu/volume_slider/volume_slider.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://d2ya6ly01724l"] +[gd_scene load_steps=4 format=3 uid="uid://d2ya6ly01724l"] [ext_resource type="Theme" uid="uid://doq7ay6f7dgfo" path="res://src/ui/menus/menu.theme" id="1_k7hk0"] [ext_resource type="Script" uid="uid://bt3oajqvevj4k" path="res://src/ui/menus/settings_menu/volume_slider/volume_slider.gd" id="1_rfe0k"] +[ext_resource type="AudioStream" uid="uid://cfj1o2mt8pc8e" path="res://assets/sfx/ui/ui_confirm_v0.wav" id="3_y4yh3"] [node name="VolumeSlider" type="VBoxContainer" groups=["VolumeSliders"]] custom_minimum_size = Vector2(300, 0) @@ -46,8 +47,10 @@ suffix = "%" [node name="AudioDemo" type="AudioStreamPlayer" parent="."] unique_name_in_owner = true +stream = ExtResource("3_y4yh3") +volume_db = -16.0 [connection signal="drag_ended" from="Slider" to="." method="_on_slider_drag_ended"] [connection signal="value_changed" from="Slider" to="." method="_on_component_value_changed"] -[connection signal="value_changed" from="DigitalDisplay/SpinBox" to="." method="_on_component_value_changed"] [connection signal="value_changed" from="DigitalDisplay/SpinBox" to="." method="_on_spin_box_value_changed"] +[connection signal="value_changed" from="DigitalDisplay/SpinBox" to="." method="_on_component_value_changed"] diff --git a/src/ui/menus/title_screen/title_screen.gd b/src/ui/menus/title_screen/title_screen.gd index c38b10a..b29793e 100644 --- a/src/ui/menus/title_screen/title_screen.gd +++ b/src/ui/menus/title_screen/title_screen.gd @@ -34,21 +34,25 @@ func stop_sounds() -> void: func continue_game() -> void: + GlobalSFXManager.confirm.play() stop_sounds() LoadingTools.load_save(save_path) func new_game() -> void: + GlobalSFXManager.confirm.play() stop_sounds() LoadingTools.load_level(level_scene) func show_settings() -> void: + GlobalSFXManager.confirm.play() var instance: Control = settings_scene.instantiate() settings_container.add_child(instance) func quit() -> void: + GlobalSFXManager.cancel.play() get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST) diff --git a/src/world/world.gd b/src/world/world.gd index 9a55303..f75cff5 100644 --- a/src/world/world.gd +++ b/src/world/world.gd @@ -63,6 +63,8 @@ func pause() -> void: AudioServer.add_bus_effect(MUSIC_BUS_IDX, pause_music_effect, 0) get_tree().paused = true + GlobalSFXManager.cancel.play() + var pause_menu: Control = pause_scene.instantiate() ui_root.add_child(pause_menu) pause_menu.tree_exiting.connect(unpause)