summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/map_generator.gd5
-rw-r--r--scripts/map_generator_resource.gd37
-rw-r--r--scripts/obstacle_generator.gd34
-rw-r--r--scripts/obstacle_generator.gd.uid1
-rw-r--r--scripts/path_generator.gd14
5 files changed, 60 insertions, 31 deletions
diff --git a/scripts/map_generator.gd b/scripts/map_generator.gd
index 0b92ab1..35ade43 100644
--- a/scripts/map_generator.gd
+++ b/scripts/map_generator.gd
@@ -6,7 +6,12 @@ var _path : Array[Vector2i]
var _pg : PathGenerator
func _ready() -> void:
+ _make_obstables()
_make_path()
+
+func _make_obstables():
+ var _og : ObstacleGenerator = ObstacleGenerator.new($TileMapLayer)
+ _og.generate_obstacles()
func _make_path():
_pg = PathGenerator.new($TileMapLayer)
diff --git a/scripts/map_generator_resource.gd b/scripts/map_generator_resource.gd
index 9bd8a57..fee187a 100644
--- a/scripts/map_generator_resource.gd
+++ b/scripts/map_generator_resource.gd
@@ -6,29 +6,18 @@ class_name MapGeneratorResource
@export var tile_size : int = 16
@export var min_path_size : int = 45
-var path_straight_atlas_coords : Vector2i = Vector2i(8, 1)
-var path_corner_atlas_coords : Vector2i = Vector2i(9, 1)
-var path_empty_atlas_coords : Vector2i = Vector2i(0, 0)
+var atlas_coords : Dictionary = {
+ "PATH_EMPTY": Vector2i(0, 0),
+ "PATH_STRAIGHT": Vector2i(8, 1),
+ "PATH_CORNER": Vector2i(9, 1),
-var water_middle_atlas_coords : Vector2i = Vector2i(8, 5)
-var water_shore_atlas_coords : Vector2i = Vector2i(9, 5)
-var water_bend_outer_atlas_coords : Vector2i = Vector2i(10, 5)
-var water_bend_inner_atlas_coords : Vector2i = Vector2i(11, 5)
+ "WATER_MIDDLE": Vector2i(8, 5),
+ "WATER_SHORE": Vector2i(9, 5),
+ "WATER_BEND_OUTER": Vector2i(10, 5),
+ "WATER_BEND_INNER": Vector2i(11, 5),
-var obstruction_one_atlas_coords : Vector2i = Vector2i(18, 6) # dead trees
-var obstruction_two_atlas_coords : Vector2i = Vector2i(19, 6)
-var obstruction_three_atlas_coords : Vector2i = Vector2i(20, 6)
-
-var obstruction_four_atlas_coords : Vector2i = Vector2i(0, 1) # living trees
-var obstruction_five_atlas_coords : Vector2i = Vector2i(1, 1)
-var obstruction_six_atlas_coords : Vector2i = Vector2i(2, 1)
-var obstruction_seven_atlas_coords : Vector2i = Vector2i(3, 1)
-var obstruction_eight_atlas_coords : Vector2i = Vector2i(4, 1)
-var obstruction_nine_atlas_coords : Vector2i = Vector2i(3, 2)
-
-var obstruction_ten_atlas_coords : Vector2i = Vector2i(0, 2) # grass
-var obstruction_eleven_atlas_coords : Vector2i = Vector2i(1, 2)
-var obstruction_twelve_atlas_coords : Vector2i = Vector2i(2, 2)
-
-var obstruction_thirteen_atlas_coords : Vector2i = Vector2i(5, 2) # rocks, bushes
-var obstruction_fourteen_atlas_coords : Vector2i = Vector2i(6, 2)
+ "DEAD_TREE": [Vector2i(18, 6), Vector2i(19, 6), Vector2i(20, 6)],
+ "TREE": [Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), Vector2i(3, 1), Vector2i(4, 1), Vector2i(3, 2)],
+ "GRASS": [Vector2i(0, 2), Vector2i(5, 2), Vector2i(6, 2)],
+ "CAMPSITE": [Vector2i(2, 20), Vector2i(29, 7), Vector2i(14, 10), Vector2i(27, 7)]
+}
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)
diff --git a/scripts/obstacle_generator.gd.uid b/scripts/obstacle_generator.gd.uid
new file mode 100644
index 0000000..153591e
--- /dev/null
+++ b/scripts/obstacle_generator.gd.uid
@@ -0,0 +1 @@
+uid://dqajkke8eqh0o
diff --git a/scripts/path_generator.gd b/scripts/path_generator.gd
index 30ffd3c..2b8a3a8 100644
--- a/scripts/path_generator.gd
+++ b/scripts/path_generator.gd
@@ -42,25 +42,25 @@ func draw_path():
for i in _path:
var score : int = _get_tile_score(_path, i)
- var atlas_coords : Vector2i = map_config.path_empty_atlas_coords
+ var atlas_coords : Vector2i = map_config.atlas_coords["PATH_EMPTY"]
var rot : TileTransform = TileTransform.ROTATE_0
match score:
2, 8, 10:
- atlas_coords = map_config.path_straight_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_STRAIGHT"]
rot = TileTransform.ROTATE_90
1, 4, 5:
- atlas_coords = map_config.path_straight_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_STRAIGHT"]
3:
- atlas_coords = map_config.path_corner_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_CORNER"]
rot = TileTransform.ROTATE_270
6:
- atlas_coords = map_config.path_corner_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_CORNER"]
12:
- atlas_coords = map_config.path_corner_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_CORNER"]
rot = TileTransform.ROTATE_90
9:
- atlas_coords = map_config.path_corner_atlas_coords
+ atlas_coords = map_config.atlas_coords["PATH_CORNER"]
rot = TileTransform.ROTATE_180
_display_tile(atlas_coords, rot, i)