46 lines
1.3 KiB
GDScript
46 lines
1.3 KiB
GDScript
extends Node2D
|
|
|
|
onready var activatorArea = $"%ActivatorArea"
|
|
onready var indicatorPlayer = $"%IndicatorPlayer"
|
|
onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalManager")
|
|
onready var level_state := get_tree().root.get_child(4).get_node("%LevelState")
|
|
onready var unactivatable_timer := $Timer
|
|
|
|
export onready var activated := false
|
|
|
|
var scene_saved_id := 0
|
|
var activatable := true
|
|
|
|
func _ready() -> void:
|
|
scene_saved_id = level_state.register_saveable_object(self)
|
|
var activated_saved = level_state.get_saved_object_property(scene_saved_id, "activated")
|
|
|
|
if activated_saved != null:
|
|
activated = activated_saved
|
|
|
|
signal_manager.connect("unlocked", self, "receive_unlock")
|
|
if activated:
|
|
selfActivate()
|
|
|
|
func selfActivate() -> void:
|
|
indicatorPlayer.play("onning")
|
|
#TODO dis importante
|
|
activatorArea.set_deferred("monitoring", false)
|
|
#TODO Close gate again?
|
|
signal_manager.emit_signal("unlocked", "gateblock")
|
|
activated = true
|
|
|
|
func receive_unlock(event: String) -> void:
|
|
# TODO For god sake make the events an enum? #debatable #polymorphism
|
|
if event == "gateblock":
|
|
indicatorPlayer.play("onning")
|
|
activated = true
|
|
|
|
func _on_ActivatorArea_body_entered(body: Node) -> void:
|
|
if(!body.is_in_group("player") && !body.is_in_group("frog")):
|
|
return
|
|
$Highlight.visible = true
|
|
if activatable:
|
|
selfActivate()
|
|
activatable = false
|