49 lines
1.1 KiB
GDScript3
49 lines
1.1 KiB
GDScript3
|
extends Area2D
|
||
|
|
||
|
@export var crop_type: String
|
||
|
var growth_time: float
|
||
|
var stages: int
|
||
|
var sprite_paths: Array
|
||
|
|
||
|
var current_stage: int = 0
|
||
|
var timer: Timer
|
||
|
|
||
|
# Load crop configurations
|
||
|
var crop_config = load("res://data/crop_config.json").get_data()
|
||
|
|
||
|
# Called when the node is added to the scene
|
||
|
func _ready():
|
||
|
if crop_type in crop_config:
|
||
|
growth_time = crop_config[crop_type]["growth_time"]
|
||
|
stages = crop_config[crop_type]["stages"]
|
||
|
sprite_paths = crop_config[crop_type]["sprite_paths"]
|
||
|
else:
|
||
|
print("Unknown crop type: ", crop_type)
|
||
|
return
|
||
|
|
||
|
timer = Timer.new()
|
||
|
timer.one_shot = true
|
||
|
timer.timeout.connect(_on_timer_timeout)
|
||
|
add_child(timer)
|
||
|
|
||
|
start_growing()
|
||
|
|
||
|
# Start the growth process
|
||
|
func start_growing():
|
||
|
if current_stage < stages:
|
||
|
timer.start(growth_time / stages)
|
||
|
|
||
|
# Called when the timer times out
|
||
|
func _on_timer_timeout():
|
||
|
current_stage += 1
|
||
|
update_crop_stage()
|
||
|
|
||
|
if current_stage < stages:
|
||
|
start_growing()
|
||
|
|
||
|
# Update the crop's visual representation for the current stage
|
||
|
func update_crop_stage():
|
||
|
if current_stage - 1 < sprite_paths.size():
|
||
|
var sprite = $Sprite
|
||
|
sprite.texture = load(sprite_paths[current_stage - 1])
|