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)