#Procedural dungeon generation Problem with creating the paths

5 messages · Page 1 of 1 (latest)

brisk cave
#

The code that parses the positions

    var corridor := []    
    for room:RigidBody2D in rooms_container.get_children():
        var s = floor(room.size / tile_size)
        var pos = Map.local_to_map(room.position)
        var ul = floor(room.position / tile_size) - s
        # Fill the rooms
        #for x in range(2,s.x - 1):
            #for y in range(2,s.y - 1):
                #Map.set_cell(Vector2(ul.x + x,ul.y + y),0,Vector2i(9,7))
        # Get the path connections and positions
        var p = paths.get_closest_point(Vector2(room.position.x,room.position.y))
        for conn in paths.get_point_connections(p):
            if not conn in corridor and not p in corridor:
                var start = Map.local_to_map(Vector2(paths.get_point_position(p).x,paths.get_point_position(p).y))
                var end = Map.local_to_map(Vector2(paths.get_point_position(conn).x,paths.get_point_position(conn).y))
                carve_path(start,end,room)
        corridor.append(p)
#

And the code for the _draw() function

func _draw() -> void:
    for room in rooms_container.get_children():
        draw_rect(Rect2(room.position - room.size,room.size),Color(0,1,0),false)
    if paths:
        for p in paths.get_point_ids():
            for c in paths.get_point_connections(p):
                var pp := paths.get_point_position(p)
                var cp := paths.get_point_position(c)
                draw_line(Vector2(pp.x,pp.y),Vector2(cp.x,cp.y),Color(1,0,0,.5),1,true)
#

the results: