Commit graph

13 commits

Author SHA1 Message Date
dd8b0364e0 Break RoomGenerators into Rect and Room methods
A RoomGenerator is now made up of two "method" classes that do separate
things:

1. A RectMethod takes the size of the area to generate and creates an
   iterable stream of Rects to fill that area.
2. A RoomMethod takes a Rect and creates a room inside of it.

These two components are composable in interesting ways, and allow a
more data-driven approach to map generation, though I don't yet have the
ability to make this mechansim entirely data-driven.
2023-03-05 16:53:00 -08:00
c17258bd73 Some x/y -> numpy_index changes 2023-03-05 14:26:52 -08:00
e2553cca3b Clean up RoomGenerator.Configuration 2023-03-04 11:08:11 -08:00
a83b85b7a0 Add one stray import to map.generator.room 2023-02-20 18:02:21 -08:00
706a244382 Fix up some imports in map.generator.room 2023-02-19 19:13:19 -08:00
21c3b5d94f Small bit of reformatting and type checking 2023-02-19 18:22:45 -08:00
37ffa423b6 Pass the whole Map into MapGenerator.generate 2023-02-18 22:55:20 -08:00
d8275725b8 Allow many more (30) attempts at generating a random rect for the RandomRectRoomGenerator 2023-02-12 14:28:42 -08:00
0d0c5a2b35 Remove this unused DefaultConfiguration class variable 2023-02-10 21:13:16 -08:00
85b059dbd4 Add two new room generators
- OneBigRoomGenerator
- RandomRectRoomGenerator
2023-02-10 21:12:42 -08:00
9d00f3b638 Promote BSPRoomGenerator.Configuration to RoomGenerator.Configuration
This configuration object can actually apply to all room generators.

Notably: copy the default configuration object before setting it to self.configuration.
2023-02-10 21:12:12 -08:00
c59dc1b907 Break up room and corridor generation into generate and apply phases
- Generate creates rooms and corridors, and apply applies them to a tile grid.
- Add up and down stairs generation to the Room Generators.
- Clean up Room.wall_points and Room.floor_points to make it easier to
  write a generic apply() method on RoomGenerator
2023-02-10 21:07:50 -08:00
9a04692539 Refactor map generator package
- Move room generators to map.generators.room
- Move corridor generators to map.generators.corridor

Generators have a generate() method that generates the things they place,
and an apply() method that applies their objects to a grid of tiles.
2023-02-09 16:07:29 -08:00