seeding-planets/entities/plants/scripts/plant_sprite.gd
Zacharie Guet ed7a8bcb6e gros dev pre proto
* Changement de l'UI, ajouts de l'inspecteur par carte et changement de police
* Ajout d'un semblant d'exploration
* Ajout de la sauvegarde des entités
* Restructuration mineure de l'arborescence
* Fix divers et réécriture des textes
2025-10-31 13:52:45 +01:00

55 lines
1.5 KiB
GDScript

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()