seeding-planets/entities/plants/scripts/plant_sprite.gd

43 lines
1.1 KiB
GDScript

extends Node2D
class_name PlantSprite
const PLANTED_SEED_CROP_WIDTH = 50
const PLANTED_SEED_POS_Y = -50
signal harvest_animation_finished
func update_plant_sprite(plant : Plant, with_animation = false):
if with_animation:
$AnimationPlayer.play("bump")
await $AnimationPlayer.animation_finished
%Sprite.flip_h = true if randi()%2 == 0 else false
%Sprite.texture = get_state_texture(plant.state, plant.plant_type)
%PlantedSeed.visible = plant.state == Plant.State.PLANTED
%PlantedSeed.texture = plant.plant_type.seed_texture
%PlantedSeed.region_rect = Rect2(
0,
PLANTED_SEED_POS_Y,
plant.plant_type.seed_texture.get_width(),
plant.plant_type.seed_texture.get_height() - PLANTED_SEED_CROP_WIDTH + -1 * PLANTED_SEED_POS_Y,
)
func get_state_texture(s: Plant.State, plant_type : PlantType) -> Texture2D:
match s:
Plant.State.PLANTED:
return null
Plant.State.GROWING:
return plant_type.growing_texture
Plant.State.MATURE:
return plant_type.mature_texture
return null
func start_harvest_animation():
$AnimationPlayer.play("harvest")
await $AnimationPlayer.animation_finished
harvest_animation_finished.emit()