extends CanvasLayer @onready var music_display = $"MusicDisplay" @onready var audio_stream_player = $"AudioStreamPlayer" var music_bus = AudioServer.get_bus_index("Music") var _tracks = [] func _ready(): get_viewport().transparent_bg = true AudioServer.set_bus_volume_db(music_bus, linear_to_db(0.5)) _load_tracks() func _process(delta): if Input.is_action_just_pressed("Play"): _play() elif Input.is_action_just_pressed("Stop"): _stop() elif Input.is_action_just_pressed("Display"): _display() for i in range(0, 10): if Input.is_action_just_pressed("Vol%d" % [i]): AudioServer.set_bus_volume_db(music_bus, linear_to_db(float(i)/9)) func _play(): var song = _get_track() if not song: print("NO SONG COULD BE FOUND") return audio_stream_player.stream = load(song.track) audio_stream_player.play() music_display.show_song(song) func _stop(): audio_stream_player.stop() music_display.hide_song() func _display(): music_display.show_song() func _get_track(): if _tracks.size() == 0: return null return _tracks.pick_random() func _load_tracks(): _load_directory("res://tracks") print("Loaded music") func _load_directory(path: String): var dir = DirAccess.open(path) if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if not dir.current_is_dir(): var file = load("%s/%s" % [path, file_name]) var instance = file.new() var new_tracks = instance.get_tracks() for track in new_tracks: if track.has("disabled") and track.disabled: continue _tracks.push_back(track) else: _load_directory("res://tracks/%s" % [file_name]) file_name = dir.get_next()