diff options
author | bd <bdunahu@operationnull.com> | 2025-05-22 23:05:36 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-05-22 23:05:36 -0400 |
commit | 834685c53554f831118a84207708cfd428d09fd9 (patch) | |
tree | 6bd8bd85c28d055c5947d554f9a99bc57aeaf1ae /scripts/obstacle_generator.gd | |
parent | 69013e2a35969fbb52cd0c3db07787698eb8c5a3 (diff) |
Use a noise texture to randomly generate obstacles onto map
Diffstat (limited to 'scripts/obstacle_generator.gd')
-rw-r--r-- | scripts/obstacle_generator.gd | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/obstacle_generator.gd b/scripts/obstacle_generator.gd new file mode 100644 index 0000000..5b97820 --- /dev/null +++ b/scripts/obstacle_generator.gd @@ -0,0 +1,34 @@ +extends Object + +class_name ObstacleGenerator + +var map_config : MapGeneratorResource = preload("res://resources/map_generator_resource.tres") +var _noise_texture : NoiseTexture2D = preload("res://resources/obstacle_noise.tres") + +var _tile_map : TileMapLayer +var _noise : Noise + +func _init(tile_map_layer: TileMapLayer): + _tile_map = tile_map_layer + _noise = _noise_texture.noise + _noise.seed = randi() + +func generate_obstacles(): + for i in range(map_config.grid_width): + for j in range(map_config.grid_height): + var noise = _noise.get_noise_2d(i, j) + print(noise) + if noise < 0.25: + pass + elif noise < 0.5: + _draw_tile_from_pool(map_config.atlas_coords["TREE"], Vector2i(i, j)) + elif noise < 0.65: + _draw_tile_from_pool(map_config.atlas_coords["DEAD_TREE"], Vector2i(i, j)) + elif noise < 0.74: + _draw_tile_from_pool(map_config.atlas_coords["GRASS"], Vector2i(i, j)) + else: + _draw_tile_from_pool(map_config.atlas_coords["CAMPSITE"], Vector2i(i, j)) + +func _draw_tile_from_pool(pool : Array, pos : Vector2i): + var choice = pool[randi_range(0, pool.size() - 1)] + _tile_map.set_cell(pos, 0, choice) |