class_name TreeDataResource
extends Resource

@export var tree_name: String = "Oak Tree"
@export var model: PackedScene
@export var icon: Texture2D
@export var growth_stages: Array[PackedScene] = []

@export_group("Biome Preferences")
@export var temperature_range: Vector2 = Vector2(0.3, 0.7) # Min/Max temperature
@export var moisture_range: Vector2 = Vector2(0.4, 0.8) # Min/Max moisture
@export var elevation_range: Vector2 = Vector2(0.0, 0.6) # Min/Max elevation

@export_group("Growth Properties")
@export var max_height: float = 15.0
@export var growth_time: float = 120.0 # Seconds to full growth
@export var spread_radius: float = 5.0

@export_group("Seasonal Behavior")
@export var seasonal_models: Array[PackedScene] = [] # Spring, Summer, Fall, Winter
@export var drops_leaves: bool = true
@export var leaf_color_variations: Array[Color] = []

@export_group("Tree Color Management")
@export var color_script: GDScript = null

@export_group("Leaf Colors")
@export var spring_leaf_color: Color = Color(0.0, 1.0, 0.0) # Green
@export var summer_leaf_color: Color = Color(0.0, 0.5, 0.0) # Darker green
@export var autumn_leaf_color: Color = Color(1.0, 0.5, 0.0) # Orange
@export var winter_leaf_color: Color = Color(0.5, 0.5, 0.5) # Gray/Brown

@export_group("Trunk Colors")
@export var spring_trunk_color: Color = Color(0.6, 0.4, 0.2) # Brown
@export var summer_trunk_color: Color = Color(0.5, 0.3, 0.1) # Darker brown
@export var autumn_trunk_color: Color = Color(0.4, 0.2, 0.1) # Darker brown
@export var winter_trunk_color: Color = Color(0.3, 0.2, 0.1) # Very dark brown

func apply_seasonal_colors(instance_model: Node3D, season: String = "summer") -> void:
	if color_script == null:
		return
	
	var script_instance = color_script.new()
	
	# Pass the tree name and season to the color script
	if script_instance.has_method("set_tree_info"):
		script_instance.set_tree_info(tree_name, season)


	if script_instance.has_method("set_leaf_color"):
		script_instance.set_leaf_color(instance_model)
	if script_instance.has_method("set_trunk_color"):
		script_instance.set_trunk_color(instance_model)