class_name GroundTile
extends Node3D
@onready var debug_text: Label = $DebugText/DebugTextViewport/DebugTextLabel
@onready var tree_spawner = $Trees
@onready var grass_spawner = $Grass
@onready var bush_spawner = $Bushes
@onready var flower_spawner = $Flowers
@onready var ground = $Ground
var grid_x: int
var grid_z: int
var cell_info: CellDataResource = null
var spawners_ready: bool = false
var cached_rng: RandomClass = null

# 326432  229379
# Grass - 1a7761 1f6051

func _ready() -> void:
	spawners_ready = true

	if cell_info != null:
		spawn_content()
		update_text_label()

	ground.material_override.albedo_color = ColorData.grass_materials[Season.current]['base']

func get_rng() -> RandomClass:
	if cached_rng == null and cell_info:
		cached_rng = RandomClass.get_seeded_instance(cell_info.cell_seed)
	elif cached_rng == null:
		cached_rng = RandomClass.get_shared_instance()
	
	return cached_rng

func set_grid_location(x, z) -> void:
	grid_x = x
	grid_z = z
	cell_info = MapData.get_map_data(grid_x, grid_z)
	
	# Only spawn if spawners are ready
	if spawners_ready and cell_info != null:
		spawn_content()

func spawn_content():
	if cell_info == null:
		return
		
	if tree_spawner and cell_info.should_spawn_trees():
		tree_spawner.spawn_trees_for_cell(cell_info)
	if grass_spawner and cell_info.should_spawn_grass():
		grass_spawner.spawn_grass_for_cell(cell_info)
	if bush_spawner and cell_info.should_spawn_bushes():
		bush_spawner.spawn_bushes_for_cell(cell_info)
	if flower_spawner and cell_info.should_spawn_flowers():
		flower_spawner.spawn_flowers_for_cell(cell_info)
	

func update_text_label() -> void:
	debug_text.text = str(cell_info.vegetation_density)
