extends Node var switches = [] var doors = [] var switch_override : Node # Called when the node enters the scene tree for the first time. func _ready() -> void: #Connect to signal bus SignalBus.switch_changed.connect(_on_switch_changed) #Collect child switches for i in self.get_children(): if i.is_in_group("switch"): if i.switch_override: switch_override = i else: switches.append(i) if i.is_in_group("door"): doors.append(i) #print("switches " + str(switches)) #print("override switches " + str(switch_override)) func _on_switch_changed() -> void: var switches_needed = switches.size() var switches_on = 0 for i in switches: if i.switched_on: switches_on += 1 #First check override switch and open or close door if switch_override != null: print("null check passed") if switch_override.switched_on: print("switched on") for i in doors: if i.door_open == false: i.open() else: if i.door_open == false: i.open() #Otherwise follow standard switches elif switches_on == switches_needed: print("switch check run with " + str(switches_on) + "switches on") for i in doors: if i.door_open == false: i.open() else: print("switch check run with " + str(switches_on) + "switches on") for i in doors: if i.door_open == true: i.close() #Otherwise follow standard switches elif switches_on == switches_needed: print("switch check run with " + str(switches_on) + "switches on") for i in doors: if i.door_open == false: i.open() else: print("switch check run with " + str(switches_on) + "switches on") for i in doors: if i.door_open == true: i.close()