Blobby/src/Contraptions/Triggers/ElevatorButton.gd

50 lines
1.4 KiB
GDScript

extends Node2D
onready var buttonPlayer = $"%ButtonPlayer"
onready var activatorArea = $"%ActivatorArea"
onready var indicatorPlayer = $"%IndicatorPlayer"
onready var elevator = get_node("./Portal")
onready var signalManager := get_tree().root.get_child(3).get_node("%SignalManager")
onready var unactivatable_timer := $Timer
onready var get_back_timer := $GetBackTimer
export var elevator_time := 30
var activatable = false
func _ready() -> void:
get_back_timer.wait_time = elevator_time
elevator.get_node("./portal").frame = 1
elevator.monitoring = false
func _process(delta):
if activatable && Input.is_action_just_released("interact"):
selfActivate()
signalManager.emit_signal("terminal_activated", elevator_time)
get_back_timer.start()
func selfActivate():
indicatorPlayer.play("onning")
buttonPlayer.play("pushing")
elevator.get_node("./portal").frame = 0
elevator.monitoring = true
#TODO dis importante
activatorArea.set_deferred("monitoring", false)
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
$Label.visible = true
$Label.text = " [e] \n Time: " + String(elevator_time) + " sec"
activatable = true
func _on_ActivatorArea_area_exited(area:Area2D) -> void:
unactivatable_timer.start()
func _on_Timer_timeout():
$Label.visible = false
activatable = false
func _on_GetBackTimer_timeout() -> void:
signalManager.emit_signal("getback_timer_up")