extends Node const MUSIC_PATH := "res://audio/Space Horror InGame Music (Exploration) _Clement Panchout.wav" @onready var music_player := AudioStreamPlayer.new() func _ready(): add_child(music_player) if not _load_and_configure_stream(): push_error("Failed to load music stream: %s" % MUSIC_PATH) return _configure_audio_bus() if SettingsManager.get_setting("music_volume") > 0: _start_music() func _load_and_configure_stream() -> bool: var stream: AudioStream = load(MUSIC_PATH) if not stream: return false if stream is AudioStreamWAV: stream.loop_mode = AudioStreamWAV.LOOP_FORWARD elif stream is AudioStreamOggVorbis: stream.loop = true music_player.stream = stream return true func _configure_audio_bus() -> void: music_player.bus = "Music" music_player.volume_db = linear_to_db(SettingsManager.get_setting("music_volume")) 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 music_player.playing: return music_player.play() func _stop_music() -> void: if not music_player.playing: return music_player.stop()