extends Node3D class_name CropTile signal on_planted() signal on_complete() @onready var growth_timer: Timer = $GrowthTimer @onready var sprout_mesh: MeshInstance3D = $Plant/Sprout @onready var pop_sound: AudioStreamPlayer3D = $Pop @onready var producer: Node3D = $Producer @onready var plant_shape: CollisionShape3D = $Plant/PlantableArea @export var produce_scene: PackedScene = preload("res://island/Pineapple.tscn") @export var debug_growth: bool = false @export var debug_growth_offset: float = 0.0; func plant(): if growth_timer.is_stopped(): growth_timer.start() emit_signal("on_planted") func complete(): pop_sound.play_with_random_pitch() producer.produce_with_random_force() emit_signal("on_complete") if debug_growth: plant() else: plant_shape.disabled = true await get_tree().create_timer(1).timeout queue_free() func _process(_delta): var scale_factor = 0 if not growth_timer.is_stopped(): scale_factor = 0.10 + 0.90 * (1 - growth_timer.time_left / growth_timer.wait_time) sprout_mesh.scale = Vector3(scale_factor, scale_factor, scale_factor) func _ready(): if debug_growth: growth_timer.start(growth_timer.wait_time - debug_growth_offset)