From 05edbf5d271c72cc1430860145828c1241cb271d Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Fri, 27 Jun 2025 14:37:51 -0600 Subject: [PATCH] Music playback continues quietly while paused --- default_bus_layout.tres | 1 + src/equipment/mp3_player/mp3_player.tscn | 1 + src/world/world.gd | 11 +++++++++++ src/world/world.tscn | 6 +++++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/default_bus_layout.tres b/default_bus_layout.tres index a5b8f49..c2e241c 100644 --- a/default_bus_layout.tres +++ b/default_bus_layout.tres @@ -1,6 +1,7 @@ [gd_resource type="AudioBusLayout" format=3 uid="uid://caten2l7w1h6w"] [resource] +bus/0/volume_db = -0.130497 bus/1/name = &"Music" bus/1/solo = false bus/1/mute = false diff --git a/src/equipment/mp3_player/mp3_player.tscn b/src/equipment/mp3_player/mp3_player.tscn index 706f419..22b9bae 100644 --- a/src/equipment/mp3_player/mp3_player.tscn +++ b/src/equipment/mp3_player/mp3_player.tscn @@ -85,6 +85,7 @@ offset_bottom = 76.0 [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] unique_name_in_owner = true +process_mode = 3 bus = &"Music" [connection signal="pause" from="HUDTool/Rumbler/Position/HUDElement/DeviceScreenMask/SubViewportContainer/SubViewport/ScreenTransform/MP3Controller" to="." method="pause_playback"] diff --git a/src/world/world.gd b/src/world/world.gd index f796a07..9f7ff6f 100644 --- a/src/world/world.gd +++ b/src/world/world.gd @@ -1,6 +1,8 @@ class_name World extends Node ## Access and flow control for the game world. +const MUSIC_BUS_IDX := 1 + @export var pause_enabled := true @export var save_state: SaveState @@ -8,6 +10,8 @@ class_name World extends Node @export var manager: WorldManager @export var spook_manager: SpookManager +@export var pause_music_effect: AudioEffect + @export_category("Game Scenes") @export var initial_level: PackedScene @@ -54,6 +58,9 @@ func _unhandled_input(event: InputEvent) -> void: func pause() -> void: + # Quiet the music + AudioServer.add_bus_effect(MUSIC_BUS_IDX, pause_music_effect, 0) + get_tree().paused = true var pause_menu: Control = pause_scene.instantiate() ui_root.add_child(pause_menu) @@ -63,6 +70,10 @@ func pause() -> void: func unpause() -> void: get_tree().paused = false + # Un-quiet the music + # NOTE: if any other bus effects are added while paused, this could become inconsistent + AudioServer.remove_bus_effect(MUSIC_BUS_IDX, 0) + func load_level(level: PackedScene) -> void: for c: Node in level_root.get_children(): diff --git a/src/world/world.tscn b/src/world/world.tscn index a30f187..a67352d 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://884jqafhtrv0"] +[gd_scene load_steps=9 format=3 uid="uid://884jqafhtrv0"] [ext_resource type="Script" uid="uid://cgqmhtemibxc5" path="res://src/world/world.gd" id="1_1k4gi"] [ext_resource type="Resource" uid="uid://tgac5tnfx56r" path="res://src/world/world_manager.tres" id="2_5kmgb"] @@ -8,10 +8,14 @@ [ext_resource type="PackedScene" uid="uid://c0uitm5cg88h1" path="res://src/ui/menus/kill_screen/kill_screen.tscn" id="6_l0av5"] [ext_resource type="PackedScene" uid="uid://brknr57xc2cp0" path="res://src/ui/elements/save_icon/save_icon.tscn" id="7_5kmgb"] +[sub_resource type="AudioEffectAmplify" id="AudioEffectAmplify_5kmgb"] +volume_db = -14.0 + [node name="World" type="Node"] script = ExtResource("1_1k4gi") manager = ExtResource("2_5kmgb") spook_manager = ExtResource("3_l0av5") +pause_music_effect = SubResource("AudioEffectAmplify_5kmgb") initial_level = ExtResource("4_5kmgb") pause_scene = ExtResource("2_6fy3g") kill_screen_scene = ExtResource("6_l0av5")