bovido/scripts/tile_map/tile_map.gd

64 lines
2 KiB
GDScript3
Raw Normal View History

extends TileMap
@export var ground_tile_source_id = 0
@export var destination_tile_source_id = 2
@export var target_tile_source_id = 3
@export var map_width = 13 # keep to a odd value
@export var map_height = 19 # keep to a odd value
var current_destination_cell: Vector2i
var current_target_cell: Vector2i
func _ready():
draw_map()
func draw_map():
draw_ground()
draw_separation()
get_random_top_cell()
func draw_ground():
for x in range(map_width):
for y in range(map_height):
set_cell(0, Vector2i(x, y), 0, Vector2i(0, 0), 0)
# The tilemap is initially divided in two section
# One for the player (bottom section)
# One for the enemy (top section)
func draw_separation():
var middle_height = floor(map_height / 2.0)
for x in range(map_width):
set_cell(1, Vector2i(x - 1, middle_height - 1), 1, Vector2i(0, 0), 0) # why have we to add -1?
func get_top_spawn_cell() -> Vector2i:
return Vector2i(floor(map_width / 2.0), 1)
func get_bottom_spawn_cell() -> Vector2i:
return Vector2i(floor(map_width / 2.0), map_height - 2)
func get_random_top_cell() -> Vector2i:
var middle_height = floor(map_height / 2.0)
var rand_width = randi_range(0, map_width - 1)
var rand_height = randi_range(0, middle_height - 1)
return Vector2i(rand_width, rand_height)
func get_random_bottom_cell() -> Vector2i:
var middle_height = floor(map_height / 2.0)
var rand_width = randi_range(0, map_width - 1)
var rand_height = randi_range(middle_height + 1, map_height - 1)
return Vector2i(rand_width, rand_height)
# Debug helper functions
func reset_and_set_target_cell(cell: Vector2i):
reset_and_set_cell(current_target_cell, cell, target_tile_source_id)
func reset_and_set_destination_cell(cell: Vector2i):
reset_and_set_cell(current_destination_cell, cell, destination_tile_source_id)
func reset_and_set_cell(current_cell: Vector2i, cell: Vector2i, tile_source_id: int):
if current_cell != null:
set_cell(0, current_cell, ground_tile_source_id, Vector2i(0, 0), 0)
set_cell(0, cell, tile_source_id, Vector2i(0, 0), 0)
current_cell = cell