Commit graph

7 commits

Author SHA1 Message Date
Griffin Smith
ecd33e0c90 Add ViewPatterns to default-extensions
Seems relatively harmless
2020-05-11 23:03:11 -04:00
Griffin Smith
e76567b9e7 Add dungeon level generation
Add a dungeon level generator, which:

1. generates an infinite sequence of rectangular rooms within the
   dimensions of the level
2. removes any duplicates from that sequence
3. Generates a graph from the delaunay triangulation of the centerpoints
   of those rooms
4. Generates the minimum-spanning-tree of that delaunay triangulation,
   with weights given by line length in points
5. Adds back a subset (default 10-15%) of edges from the delaunay
   triangulation to the graph
6. Uses the resulting graph to draw corridors between the rooms, using a
   random point on the near edge of each room to pick the points of the
   corridors
2019-12-30 11:31:56 -05:00
Griffin Smith
4db3a68efe Add doors and an open command
Add a Door entity and an Open command, which necessitated supporting the
direction prompt. Currently nothing actually puts doors on the map,
which puts a slight damper on actually testing this out.
2019-09-20 19:38:46 -04:00
Griffin Smith
15895c69fe Remove all but the largest region in caves
When generating cave levels, remove all but the largest contiguous
region from the resulting level.
2019-09-15 17:30:57 -04:00
Griffin Smith
6678ac986c Fill the outer edges of generated levels
To avoid the character being able to go OOB.

This is something we had in the Rust version but I hadn't ported over yet
2019-09-14 15:16:27 -04:00
Griffin Smith
c06edf3cc6 Place the chacracter in the level at startup time
Randomly select a position in the largest contiguous region of the
generated level in which to place the character at startup time.
2019-09-13 15:24:05 -04:00
Griffin Smith
f03ad6bbd6 Add cellular-automata cave generator
Add a cellular-automata-based cave level generator, plus an
optparse-applicative-based CLI for invoking level generators in general.
2019-09-07 14:52:37 -04:00