Terachor/src/main.gd
2024-08-27 19:43:31 -04:00

84 lines
1.7 KiB
GDScript

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()