44 lines
955 B
GDScript
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()
|