diff --git a/squirrelbattle/mapgeneration/broguelike.py b/squirrelbattle/mapgeneration/broguelike.py index f60d423..0a92180 100644 --- a/squirrelbattle/mapgeneration/broguelike.py +++ b/squirrelbattle/mapgeneration/broguelike.py @@ -28,6 +28,20 @@ class Generator: def __init__(self, params: dict = DEFAULT_PARAMS): self.params = params + @staticmethod + def room_fits(level, y, x, room, door_y, door_x, dy, dx): + if level[y][x] != Tile.EMPTY or level[y-dy][x-dx] != Tile.FLOOR: + return False + lh, lw = len(level), len(level[0]) + rh, rw = len(room), len(room[0]) + for ry in range(rh): + for rx in range(rw): + if room[y][x] == Tile.FLOOR: + ly, lx = ry - door_y, rx - door_x + if not(0 <= ly <= rh and 0 <= lx <= rw) or \ + level[ly][lx] == Tile.FLOOR: + return False + return True def corr_meta_info(self): if random() < self.params["corridor_chance"]: h_sup = randint(self.params["min_h_corr"], \