Terachor/src/main.gd

85 lines
1.7 KiB
GDScript3
Raw Normal View History

2024-08-27 21:11:45 +00:00
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()
2024-08-27 21:28:21 +00:00
if not song:
print("NO SONG COULD BE FOUND")
return
2024-08-27 21:11:45 +00:00
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():
2024-08-27 21:28:21 +00:00
if _tracks.size() == 0:
return null
2024-08-27 21:11:45 +00:00
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():
2024-08-27 23:43:31 +00:00
var file = load("%s/%s" % [path, file_name])
2024-08-27 21:11:45 +00:00
var instance = file.new()
var new_tracks = instance.get_tracks()
for track in new_tracks:
2024-08-27 21:28:21 +00:00
if track.has("disabled") and track.disabled:
continue
2024-08-27 21:11:45 +00:00
_tracks.push_back(track)
else:
_load_directory("res://tracks/%s" % [file_name])
file_name = dir.get_next()