Added override switch
This commit is contained in:
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,34 +1,41 @@
|
||||
extends Node
|
||||
|
||||
@export var door : Node
|
||||
@export var switches = []
|
||||
|
||||
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"):
|
||||
switches.append(i)
|
||||
|
||||
print(switches)
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
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
|
||||
print("switches on " + str(switches_on))
|
||||
|
||||
if switches_on == switches_needed:
|
||||
#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:
|
||||
|
||||
@@ -39,6 +39,7 @@ interact="interactable objects"
|
||||
switch=""
|
||||
scene_rigidbody=""
|
||||
weight=""
|
||||
switch_override=""
|
||||
|
||||
[input]
|
||||
|
||||
|
||||
@@ -13,10 +13,6 @@ func _ready() -> void:
|
||||
else:
|
||||
close()
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func open():
|
||||
door_open = true
|
||||
anim_player.play("open")
|
||||
|
||||
13
scripts/switch_override.gd
Normal file
13
scripts/switch_override.gd
Normal file
@@ -0,0 +1,13 @@
|
||||
extends SwitchBasic
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
add_to_group("switch_override")
|
||||
|
||||
func interact():
|
||||
switch()
|
||||
|
||||
func _on_static_body_3d_switch_hit() -> void:
|
||||
if bullet_enabled:
|
||||
switch()
|
||||
Reference in New Issue
Block a user