extends Node

var current_active : int = 0


func _process(_delta):
	the_connecting()
	the_pausing()


func the_pausing():
	# iterate through the children, allowing only the current active node to run
	for i in len(get_children()):
		if get_child(i).has_signal("scene_finished"): # only change if active var should exist
			get_child(i).active = true if i == current_active else false


func the_connecting():
	# iterate through the children and connect up the child_finished method
	for i in len(get_children()):
		
		# connect the finished signal if it exists and
		#  if the failed finished isn't already connected
		if (get_child(i).has_signal("scene_finished") and
			get_child(i).get_signal_connection_list("scene_finished") == []):
			
			get_child(i).connect("scene_finished", self, "child_finished")
		
		
		# connect the failed signal if it exists and
		#  if the failed signal isn't already connected
		if (get_child(i).has_signal("scene_failed") and
			get_child(i).get_signal_connection_list("scene_failed") == []):
			
			get_child(i).connect("scene_failed", self, "child_failed")


func child_finished():
	# designed to be called from a signal
	current_active += 1
	if current_active >= len(get_children()):
		current_active = 0


func child_failed():
	# designed to be called from a signal
	current_active -= 1
	if current_active < 0:
		current_active = len(get_children()) - 1
