Llhth-h-hno message
d61f56d5Add on Nov 19, 2025History
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()