minijam-166/objects/plant.tscn
2024-08-31 16:22:45 +02:00

83 lines
1.8 KiB
Plaintext

[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"]