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