Attempt #1 to dig tunnels -- it does not work

This commit is contained in:
Eryn Wells 2022-05-01 18:03:47 -07:00
parent 3e87ef7279
commit 010c67fd78

View file

@ -3,6 +3,7 @@
import logging import logging
import numpy as np import numpy as np
import random
import tcod import tcod
from .geometry import Point, Rect, Size from .geometry import Point, Rect, Size
from .tile import Floor, Wall from .tile import Floor, Wall
@ -79,14 +80,38 @@ class RoomsAndCorridorsGenerator(MapGenerator):
rooms: List['RectangularRoom'] = [] rooms: List['RectangularRoom'] = []
# For nicer debug logging # For nicer debug logging
indent = 0 indent = 0
for node in bsp.pre_order():
for node in bsp.post_order():
node_bounds = self.__rect_from_bsp_node(node) node_bounds = self.__rect_from_bsp_node(node)
if node.children: if node.children:
if LOG.getEffectiveLevel() == logging.DEBUG: LOG.debug(f'{" " * indent}{node_bounds}')
LOG.debug(f'{" " * indent}{node_bounds}')
indent += 2 left_node_bounds = self.__rect_from_bsp_node(node.children[0])
# TODO: Connect the two child rooms right_node_bounds = self.__rect_from_bsp_node(node.children[1])
LOG.debug(f'{" " * indent} left:{node.children[0]}, {left_node_bounds}')
LOG.debug(f'{" " * indent}right:{node.children[1]}, {right_node_bounds}')
start_point = left_node_bounds.midpoint
end_point = right_node_bounds.midpoint
# Randomly choose whether to move horizontally then vertically or vice versa
if random.random() < 0.5:
corner = Point(end_point.x, start_point.y)
else:
corner = Point(start_point.x, end_point.y)
LOG.debug(f'{" " * indent}Digging tunnel between {start_point} and {end_point} with corner {corner}')
LOG.debug(f'{" " * indent}`-> start:{left_node_bounds}')
LOG.debug(f'{" " * indent}`-> end:{right_node_bounds}')
for x, y in tcod.los.bresenham(tuple(start_point), tuple(corner)).tolist():
tiles[x, y] = Floor
for x, y in tcod.los.bresenham(tuple(corner), tuple(end_point)).tolist():
tiles[x, y] = Floor
indent += 2
else: else:
LOG.debug(f'{" " * indent}{node_bounds} (room) {node}') LOG.debug(f'{" " * indent}{node_bounds} (room) {node}')
@ -101,8 +126,7 @@ class RoomsAndCorridorsGenerator(MapGenerator):
room = RectangularRoom(bounds) room = RectangularRoom(bounds)
rooms.append(room) rooms.append(room)
if LOG.getEffectiveLevel() == logging.DEBUG: indent -= 2
indent -= 2
self.rooms = rooms self.rooms = rooms