44 lines
1.1 KiB
GDScript
44 lines
1.1 KiB
GDScript
extends Node2D
|
|
onready var anims = $AnimationPlayer
|
|
onready var flip_timer = $FlipTimer
|
|
onready var delay_timer = $DelayTimer
|
|
onready var static_body = $StaticBody2D
|
|
export var time:float = 60
|
|
export var delay = 0.0
|
|
export(int, "Wood", "Yellow") var color
|
|
onready var time_ms = time / 60.0 # Time is converted from frames @ 60fps to ms
|
|
onready var collision_layer = static_body.collision_layer
|
|
|
|
func _ready():
|
|
#Auto start if delay variable is zero
|
|
if delay == 0.0:
|
|
anims.play("idle")
|
|
flip_timer.start(time_ms)
|
|
else:
|
|
delay_timer.start(delay)
|
|
#Easy mode
|
|
time_ms /= Game.enemy_speed_factor
|
|
|
|
func _on_AnimationPlayer_animation_finished(anim_name):
|
|
#Return to idle after turn animation
|
|
if anim_name == "turn":
|
|
anims.play("idle")
|
|
flip_timer.start(time_ms)
|
|
|
|
|
|
func _on_FlipTimer_timeout():
|
|
anims.play("turn")
|
|
|
|
|
|
func _on_DelayTimer_timeout():
|
|
anims.play("idle")
|
|
flip_timer.start(time_ms)
|
|
|
|
|
|
func _on_DetectPlayer_body_entered(body: Node) -> void:
|
|
if body.is_in_group("player"):
|
|
static_body.collision_layer = 0
|
|
|
|
func _on_DetectPlayer_body_exited(body: Node) -> void:
|
|
if body.is_in_group("player"):
|
|
static_body.collision_layer = collision_layer
|