Place NPCs randomly in a generated room

This commit is contained in:
Eryn Wells 2022-05-03 19:00:45 -07:00
parent 58e732c923
commit 09bdf8a7a6
2 changed files with 10 additions and 2 deletions

View file

@ -33,8 +33,8 @@ class Engine:
self.player = Entity('@', position=player_start_position, fg=tcod.white)
self.entities: AbstractSet[Entity] = {self.player}
for _ in range(self.rng.randint(1, 15)):
position = Point(self.rng.randint(0, map_size.width), self.rng.randint(0, map_size.height))
for _ in range(self.rng.randint(5, 15)):
position = self.map.random_walkable_position()
self.entities.add(Entity('@', position=position, fg=tcod.yellow))
def handle_event(self, event: tcod.event.Event):

View file

@ -18,6 +18,14 @@ class Map:
self.generator = RoomsAndCorridorsGenerator(size=size)
self.tiles = self.generator.generate()
def random_walkable_position(self) -> Point:
# TODO: Include hallways
random_room: RectangularRoom = random.choice(self.generator.rooms)
floor = random_room.floor_bounds
random_position_in_room = Point(random.randint(floor.min_x, floor.max_x),
random.randint(floor.min_y, floor.max_y))
return random_position_in_room
def tile_is_in_bounds(self, point: Point) -> bool:
return 0 <= point.x < self.size.width and 0 <= point.y < self.size.height