extends TileMapLayer
@onready var tilemap : TileMapLayer = $"."
var room_grid = {}
var room_seed = [Vector2(4,4)]
var path_arry = []
var room_direction = [Vector2(0,1) , Vector2(1,0) , Vector2(0,-1) , Vector2(-1,0) ]
func room_gird_initial(): #房间表格填充
for x in range(7):
for y in range(7):
room_grid[Vector2(x+1,y+1)] = 0.0
func tile_step_1():
for i in range(3) :
room_grid[room_seed[i]] = 1
var new_seed
while true :
new_seed = room_seed[i] + room_direction[randi_range(0,3)]
if room_grid[new_seed] == 0 :
room_grid[new_seed] = 1
room_seed.append(new_seed)
break
func tile_step_2():
var pattern : TileMapPattern
var path_times = 50.0
var path_pos
for i in range(len(room_seed)):
pattern = tilemap.tile_set.get_pattern(randi_range(0,9))
tilemap.set_pattern((room_seed[i]) * 30,pattern)
if i > 0:
%Path2D.curve.set_point_position(0, tilemap.map_to_local((room_seed[i-1]) * 30 + Vector2(10,10)) )
%Path2D.curve.set_point_position(1, tilemap.map_to_local((room_seed[i]) * 30 + Vector2(10,10)) )
path_pos = local_to_map(%PathFollow2D.position)
for j in range(path_times):
if path_pos != local_to_map(%PathFollow2D.position):
path_pos = local_to_map(%PathFollow2D.position)
tilemap.set_cell(path_pos, 0 , Vector2(1,1))
path_arry.append(path_pos)
%PathFollow2D.progress_ratio += (1.0/path_times)
tilemap.set_cells_terrain_connect(path_arry , 0 , 0 , true)
func tile_step_3():
$Camera2D.position = tilemap.map_to_local((room_seed[2]) * 30)
func _ready() -> void:
room_gird_initial()
tile_step_1()
tile_step_2()
tile_step_3()