pollen-not-included/entities/snail/states/snail_eating.gd
Dan b8f42a552e Enhanced snail animations and interactions
Added new animation states for the snail entity, including 'Move' and 'Sleep'. The snail now hides certain elements when eating and plays appropriate animations when transitioning between states. Also introduced a new texture for sleep indication.
2024-05-16 12:00:52 +01:00

51 lines
1.1 KiB
GDScript

extends State
class_name SnailEating
@onready var snail : Snail = get_parent().get_parent() as Snail # I think this is bad but I dont care it works
var eat_interval : float = 3.0
var eat_timer : float = 0.0
var move_to : Vector2 = Vector2.ZERO
var original_snail_scale : float = 0.1
func enter(_msg : Dictionary = {}) -> void:
Log.pr("I am a snail and I will eat!")
snail.eating = true
if snail.animation:
snail.animation.play("Move")
snail.hide_zeds()
func exit() -> void:
snail.eating = false
snail.sprite.flip_h = false
func update(delta : float) -> void:
eat_timer += delta
if eat_timer >= eat_interval:
snail.eat()
eat_timer = 0.0
func physics_update(_delta : float) -> void:
if move_to == Vector2.ZERO:
move_to = snail.get_random_target()
if snail.global_position.distance_to(move_to) > 3:
snail.velocity = snail.global_position.direction_to(move_to) * snail.speed
if move_to.x > snail.global_position.x:
snail.sprite.scale.x = original_snail_scale
else:
snail.sprite.scale.x = -original_snail_scale
snail.move_and_slide()
else:
move_to = Vector2.ZERO