39 lines
991 B
GDScript
39 lines
991 B
GDScript
extends CharacterBody2D
|
|
|
|
enum States {
|
|
IDLE,
|
|
PECKING
|
|
}
|
|
|
|
@export var minimum_pecking_schedule_gap := 8.0
|
|
@export var maximum_pecking_schedule_gap := 25.0
|
|
@export var should_log_pecking_schedule := false
|
|
|
|
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
|
|
|
|
var current_state := States.IDLE
|
|
var pecking_sched := randf_range(8.0, 25.0)
|
|
var pecking_timer := 0.0
|
|
|
|
func _ready() -> void:
|
|
_print_sched()
|
|
|
|
|
|
func _process(delta: float) -> void:
|
|
if current_state == States.IDLE:
|
|
pecking_timer += delta
|
|
if pecking_timer >= pecking_sched:
|
|
current_state = States.PECKING
|
|
animated_sprite_2d.play("pecking")
|
|
await animated_sprite_2d.animation_finished
|
|
animated_sprite_2d.play("idle")
|
|
pecking_sched = randf_range(minimum_pecking_schedule_gap, maximum_pecking_schedule_gap)
|
|
pecking_timer = 0
|
|
current_state = States.IDLE
|
|
_print_sched()
|
|
|
|
|
|
func _print_sched() -> void:
|
|
if should_log_pecking_schedule:
|
|
print("%s Pecking Schedule: %f" % [name, pecking_sched])
|