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
This commit is contained in:
parent
6f427fe4d6
commit
e76567b9e7
20 changed files with 680 additions and 103 deletions
13
build/hgeometry-fix-haddock.patch
Normal file
13
build/hgeometry-fix-haddock.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/src/Data/Geometry/PlanarSubdivision/Merge.hs b/src/Data/Geometry/PlanarSubdivision/Merge.hs
|
||||
index 1136114..3f4e7bb 100644
|
||||
--- a/src/Data/Geometry/PlanarSubdivision/Merge.hs
|
||||
+++ b/src/Data/Geometry/PlanarSubdivision/Merge.hs
|
||||
@@ -153,7 +153,7 @@ mergeWith' mergeFaces p1 p2 = PlanarSubdivision cs vd rd rf
|
||||
-- we have to shift the number of the *Arcs*. Since every dart
|
||||
-- consists of two arcs, we have to shift by numDarts / 2
|
||||
-- Furthermore, we take numFaces - 1 since we want the first
|
||||
- -- *internal* face of p2 (the one with FaceId 1) to correspond with the first free
|
||||
+ -- /internal/ face of p2 (the one with FaceId 1) to correspond with the first free
|
||||
-- position (at index numFaces)
|
||||
|
||||
cs = p1^.components <> p2'^.components
|
||||
Loading…
Add table
Add a link
Reference in a new issue