extends AudioStreamPlayer
class_name AudioArrayPlayer

signal all_finished()

export var queue := []

func stop():
	queue.clear()
	.stop()

func _ready():
	self.connect("finished", self, "_finished")

func start():
	if len(queue) > 0:
		var new = queue[0]
		if new is float:
			get_tree().create_timer(new).connect("timeout", self, "_finish_delay")
			return
		stream = new
		stream.loop
		if !playing:
			play()
	else:
		emit_signal("all_finished")

func _finish_delay():
	next()

func next():
	queue.pop_front()
	start()

func _finished():
	next()


func play_all(extra:=[]):
	add_streams(extra)
	start()

func add_stream(new:AudioStream):
	queue.append(new)

func add_streams(new:Array):
	queue.append_array(new)
