diff --git a/scripts/AudioManager.gd b/scripts/AudioManager.gd index fb172d4..286cdd0 100644 --- a/scripts/AudioManager.gd +++ b/scripts/AudioManager.gd @@ -6,25 +6,42 @@ const MUSIC_PATH := "res://audio/Space Horror InGame Music (Exploration) _Clemen var is_music_playing := false func _ready(): - if is_music_playing: - return - + add_child(music_player) var stream: AudioStream = load(MUSIC_PATH) if not stream: push_error("Failed to load music stream: %s" % MUSIC_PATH) return - # Loop safely if stream is AudioStreamWAV: stream.loop_mode = AudioStreamWAV.LOOP_FORWARD elif stream is AudioStreamOggVorbis: stream.loop = true - # Setup player music_player.stream = stream music_player.bus = "Music" music_player.volume_db = linear_to_db(SettingsManager.get_setting("music_volume")) - add_child(music_player) - music_player.play() + if SettingsManager.get_setting("music_volume") > 0: + _start_music() + +func update_music_volume(volume: float) -> void: + var volume_db = linear_to_db(volume) + music_player.volume_db = volume_db + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), volume_db) + + if volume > 0: + _start_music() + else: + _stop_music() + +func _start_music() -> void: + if is_music_playing: + return + music_player.play() is_music_playing = true + +func _stop_music() -> void: + if not is_music_playing: + return + music_player.stop() + is_music_playing = false diff --git a/scripts/SettingsMenu.gd b/scripts/SettingsMenu.gd index 02ef296..f328907 100644 --- a/scripts/SettingsMenu.gd +++ b/scripts/SettingsMenu.gd @@ -40,10 +40,13 @@ func _on_volume_slider_changed(value, setting_key): if bus_map.has(setting_key): var bus_index = AudioServer.get_bus_index(bus_map[setting_key]) - if bus_index >= 0: + if bus_index < 0: + return + if setting_key == "music_volume": + AudioManager.update_music_volume(value) + else: AudioServer.set_bus_volume_db(bus_index, linear_to_db(value)) - func _input(event): if event.is_action_pressed("ui_cancel") or event.is_action_pressed("ui_menu_toggle"): print("ESC pressed in settings")