hero-mark-2/objects/environment/turniwood/turning_platform.gd

54 lines
1.3 KiB
GDScript

tool
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 var texture: Texture setget _set_texture
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():
if Engine.editor_hint:
return
_set_texture(texture)
#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 _set_texture(new_texture: Texture) -> void:
texture = new_texture
if is_inside_tree():
$Sprite.texture = new_texture
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