[gd_scene load_steps=4 format=3 uid="uid://c4doyvo3mqgvl"] [ext_resource type="Texture2D" uid="uid://biekl11dvnhgw" path="res://Victor_carre.jpg" id="1_x6d3i"] [sub_resource type="GDScript" id="GDScript_x3g5o"] script/source = "class_name Plant extends Node2D enum PlantState { SAPLING, GROWN, DEAD} signal grown signal died @onready var growing_timer: Timer = $Growing @onready var sprite_node: AnimatedSprite2D = $AnimatedSprite2D var parameter: PlantType var state := PlantState.SAPLING func init(plant_parameter: PlantType): parameter = plant_parameter sprite_node.sprite_frames = parameter.sprite_frames func _on_growing_timeout() -> void: match state: PlantState.SAPLING: grow() PlantState.GROWN: die() PlantState.DEAD: push_error(\"Already dead\") func plant(new_position: Vector2): position = new_position state = PlantState.SAPLING growing_timer.start(parameter.growing_time) sprite_node.play(\"SAPLING\") func grow(): if state != PlantState.SAPLING: push_error(\"Tried to grow \" + parameter.type + \", but was not at sapling state\") return state = PlantState.GROWN growing_timer.start(parameter.dying_time) grown.emit() sprite_node.play(\"GROWN\") func die(): state = PlantState.DEAD died.emit() sprite_node.play(\"DEAD\") " [sub_resource type="SpriteFrames" id="SpriteFrames_667un"] animations = [{ "frames": [{ "duration": 1.0, "texture": ExtResource("1_x6d3i") }], "loop": true, "name": &"SEED", "speed": 5.0 }] [node name="Plant" type="Node2D"] script = SubResource("GDScript_x3g5o") [node name="Growing" type="Timer" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] scale = Vector2(0.0378561, 0.0378561) sprite_frames = SubResource("SpriteFrames_667un") animation = &"SEED" [connection signal="timeout" from="Growing" to="." method="_on_growing_timeout"]