Files
fps_project_1/levels/switchcontroller.gd
2024-10-14 10:14:07 -05:00

44 lines
955 B
GDScript

extends Node
@export var door : Node
var switches = []
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.is_in_group("switch_override"):
switch_override = i
else:
switches.append(i)
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.switched_on:
if door.door_open == false:
door.open()
else:
if door.door_open == true:
door.close()
#Otherwise follow standard switches
elif switches_on >= switches_needed:
if door.door_open == false:
door.open()
else:
if door.door_open == true:
door.close()