summaryrefslogtreecommitdiff
path: root/src/tools/world_generator
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/world_generator')
-rw-r--r--src/tools/world_generator/scenes/WorldGenerator.tscn1
-rw-r--r--src/tools/world_generator/scripts/walker_head.gd42
-rw-r--r--src/tools/world_generator/scripts/world_generator.gd10
3 files changed, 39 insertions, 14 deletions
diff --git a/src/tools/world_generator/scenes/WorldGenerator.tscn b/src/tools/world_generator/scenes/WorldGenerator.tscn
index 32ed939..824d298 100644
--- a/src/tools/world_generator/scenes/WorldGenerator.tscn
+++ b/src/tools/world_generator/scenes/WorldGenerator.tscn
@@ -48,7 +48,6 @@ points = PoolVector2Array( 16, 16, 0, 16, 0, 0, 16, 0 )
[node name="WorldGenerator" type="Node2D"]
script = ExtResource( 5 )
-TILEMAP_NP = NodePath("TileMap")
[node name="TileMap" type="TileMap" parent="."]
tile_set = SubResource( 1 )
diff --git a/src/tools/world_generator/scripts/walker_head.gd b/src/tools/world_generator/scripts/walker_head.gd
index dc71db1..2ad9650 100644
--- a/src/tools/world_generator/scripts/walker_head.gd
+++ b/src/tools/world_generator/scripts/walker_head.gd
@@ -2,8 +2,8 @@ extends Node2D
export(NodePath) var TILEMAP_NP: NodePath
export(PackedScene) var WALKER_UNIT_NP: PackedScene
-export(int, 5, 100, 1) var STARTING_UNIT_COUNT: int = 5
-export(int, 3, 10, 1) var INITIAL_SAFE_ZONE_SIZE: int = 3
+export(int, 4, 100, 1) var STARTING_UNIT_COUNT: int = 6
+export(int, 2, 10, 1) var INITIAL_SAFE_ZONE_SIZE: int = 2
onready var tilemap: TileMap = get_node(TILEMAP_NP)
@@ -23,6 +23,15 @@ func _ready() -> void:
_fill_empty_space()
+func get_cells_around(size: int=INITIAL_SAFE_ZONE_SIZE) -> Array:
+ var locations: Array = []
+ for i in range(-size, size):
+ for j in range(-size, size):
+ locations.append(Vector2(i, j))
+
+ return locations
+
+
func _place_safe_zone() -> void:
var size: int = INITIAL_SAFE_ZONE_SIZE
for i in range(-size, size):
@@ -44,27 +53,40 @@ func _spawn_walker_unit(spawn_position: Vector2) -> void:
func _fill_empty_space() -> void:
+ var locations: Array = _get_empty_cells_location()
+ for location in locations:
+ tilemap.set_cellv(location, Global.WORLD_TILE_WALL)
+
+
+func _get_empty_cells_location() -> Array:
+ var locations: Array = []
var rect: Rect2 = tilemap.get_used_rect()
var margin: int = map_margin
for x in range(-margin, rect.size.x + margin):
- for y in range (-margin, rect.size.y + margin ):
- var poses: Vector2= Vector2(rect.position.x + x, rect.position.y + y)
- if tilemap.get_cell(int(poses.x), int(poses.y)) == TileMap.INVALID_CELL:
- tilemap.set_cellv(poses, Global.WORLD_TILE_WALL)
+ for y in range (-margin, rect.size.y + margin):
+ var location: Vector2 = Vector2(rect.position.x + x, rect.position.y + y)
+ if tilemap.get_cell(int(location.x), int(location.y)) == TileMap.INVALID_CELL:
+ locations.append(location)
+
+ return locations
func _on_world_gen_walker_started(id: int) -> void:
- print("Walker unit %s started." % id)
+ # print("Walker unit %s started." % id)
+ pass
func _on_world_gen_walker_finished(id: int) -> void:
- print("Walker unit %s finished." % id)
+ # print("Walker unit %s finished." % id)
+ pass
func _on_world_gen_walker_died(id: int) -> void:
- print("Walker unit %s died." % id)
+ # print("Walker unit %s died." % id)
+ pass
func _on_world_gen_spawn_walker_unit(location: Vector2) -> void:
- print("Spawning new walking unit.")
+ # print("Spawning new walking unit.")
+ pass
_spawn_walker_unit(location)
diff --git a/src/tools/world_generator/scripts/world_generator.gd b/src/tools/world_generator/scripts/world_generator.gd
index 5e8626b..5de84ea 100644
--- a/src/tools/world_generator/scripts/world_generator.gd
+++ b/src/tools/world_generator/scripts/world_generator.gd
@@ -1,11 +1,15 @@
extends Node2D
-export(NodePath) var TILEMAP_NP: NodePath
-onready var tilemap: TileMap = get_node(TILEMAP_NP)
+onready var tilemap: TileMap = $TileMap
+onready var walker_head: Node2D = $WalkerHead
func get_valid_map_coords() -> Array:
- return tilemap.get_used_cells_by_id(Global.WORLD_TILE_PATH)
+ var safe_area: Array = walker_head.get_cells_around()
+ var cells_used: Array = tilemap.get_used_cells_by_id(Global.WORLD_TILE_PATH)
+ for location in safe_area:
+ cells_used.erase(location)
+ return cells_used
func get_centered_world_position(location: Vector2) -> Vector2: