49 lines
1.2 KiB
GDScript
49 lines
1.2 KiB
GDScript
extends Node2D
|
|
|
|
|
|
onready var level_state := get_tree().root.get_child(4).get_node("%LevelState")
|
|
|
|
export onready var is_armed = false
|
|
|
|
var trigger_zone_entered: bool = false
|
|
|
|
var activatable = false
|
|
|
|
func _ready():
|
|
level_state.register_saveable_node(self)
|
|
var is_armed_saved = level_state.get_saved_node_property(self, "is_armed")
|
|
|
|
if level_state.savepoint_loaded && is_armed_saved != null:
|
|
is_armed = is_armed_saved
|
|
|
|
if(!is_armed):
|
|
if($HarmfulArea.is_in_group("harmful")):
|
|
$HarmfulArea.remove_from_group("harmful")
|
|
$Sprite/AnimationPlayer.play("unarmed")
|
|
else:
|
|
$HarmfulArea.add_to_group("harmful")
|
|
$Sprite/AnimationPlayer.play("armed")
|
|
|
|
|
|
func _on_Timer_timeout() -> void:
|
|
is_armed = true
|
|
$HarmfulArea.add_to_group("harmful")
|
|
|
|
|
|
func _on_AnimationPlayer_animation_finished(anim_name: String) -> void:
|
|
if(anim_name == "arming"):
|
|
$Sprite/AnimationPlayer.play("armed")
|
|
|
|
|
|
func _on_DetectionArea_area_exited(area: Area2D) -> void:
|
|
if(area.is_in_group("player") && !$HarmfulArea.is_in_group("harmful")
|
|
&& trigger_zone_entered):
|
|
$Timer.start()
|
|
trigger_zone_entered = false
|
|
$Sprite/AnimationPlayer.play("arming")
|
|
|
|
|
|
func _on_HarmfulArea_area_entered(area: Area2D) -> void:
|
|
if(area.is_in_group("player")):
|
|
trigger_zone_entered = true
|