43 lines
1.1 KiB
GDScript
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()
|