From ddbd0299a09110c6ed247cdac2be8dd247d0866b Mon Sep 17 00:00:00 2001 From: Charles Peyrat Date: Fri, 8 Jan 2021 03:38:37 +0100 Subject: [PATCH] Implement method room_fits --- squirrelbattle/mapgeneration/broguelike.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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"], \