summaryrefslogtreecommitdiff
path: root/scripts/obstacle_generator.gd
blob: d799b887db1d38614d2ca01378c9a75821ba5de0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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)
			if noise < 0.20:
				pass
			elif noise < 0.55:
				_draw_tile_from_pool(map_config.atlas_coords["TREE"], Vector2i(i, j))
			elif noise < 0.63:
				_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)