extends Node # Called when the node enters the scene tree for the first time. func _ready() -> void: var width: int = 100 var height: int = 100 var terrainMap: Array[Variant] = generateTerrainMap(width, height) paintTerrainMap($Ground, terrainMap, "grass", 0) func generateTerrainMap(width: int, heigth: int) -> Array[Variant]: var terrainMap: Array[Variant] = [] for y in range(heigth): terrainMap.append([]) for x in range(width): if randf() < 0.1: # 10% chance for asphalt terrainMap[y].append("asphalt") else: terrainMap[y].append("grass") return terrainMap func paintTerrainMap(layer, terrain_map, default_terrain, terrain_set_index): var tile_set = layer.tile_set #var terrain_set = tile_set.get_terrain_set(terrain_set_index) #var grass_id = terrain_set.find_terrain_by_name("Gras") #var asphalt_id = terrain_set.find_terrain_by_name("Asphalt") # Collect coordinates for each terrain type var grass_cells = [] var asphalt_cells = [] for y in range(terrain_map.size()): for x in range(terrain_map[y].size()): var terrain_name = terrain_map[y][x] if terrain_name == "grass": grass_cells.append(Vector2i(x, y)) elif terrain_name == "asphalt": asphalt_cells.append(Vector2i(x, y)) # Paint grass if grass_cells.size() > 0: $Ground.set_cells_terrain_connect(grass_cells, terrain_set_index, 0) # Paint asphalt if asphalt_cells.size() > 0: for x in range(asphalt_cells.size()): for y in range(asphalt_cells.size()): if terrain_map[x][y] == "asphalt": $Roads.set_cell(Vector2i(x, y), 1, Vector2i(9, 16))