extends Node2D class_name PlantSprite const PLANTED_SEED_CROP_WIDTH = 50 const PLANTED_SEED_POS_Y = 0 const PARTICLES_SCENE : PackedScene = preload("res://common/vfx/particles/particles.tscn") 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 generate_mutation_effects(plant : Plant): for m in plant.plant_mutations: var particles_emitter : Particles = PARTICLES_SCENE.instantiate() as CPUParticles2D particles_emitter.setup_particles( Particles.Parameters.new( m.get_icon(), PlantMutation.get_rarity_color(m.get_rarity()) ) ) add_child(particles_emitter) func start_harvest_animation(): $AnimationPlayer.play("harvest") await $AnimationPlayer.animation_finished harvest_animation_finished.emit()