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
				
			
		|  | @ -1,7 +1,32 @@ | |||
| { nixpkgs ? import ./nixpkgs.nix {} }: | ||||
| let inherit (nixpkgs) pkgs; | ||||
| in self: super: rec { | ||||
|   generic-arbitrary = pkgs.haskell.lib.appendPatch | ||||
| in self: super: with pkgs.haskell.lib; rec { | ||||
|   generic-arbitrary = appendPatch | ||||
|     super.generic-arbitrary | ||||
|     [ ./build/generic-arbitrary-export-garbitrary.patch ]; | ||||
| 
 | ||||
|   hgeometry = | ||||
|     appendPatch | ||||
|       (self.callHackageDirect { | ||||
|         pkg = "hgeometry"; | ||||
|         ver = "0.9.0.0"; | ||||
|         sha256 = "02hyvbqm57lr47w90vdgl71cfbd6lvwpqdid9fcnmxkdjbq4kv6b"; | ||||
|       } {}) [ ./build/hgeometry-fix-haddock.patch ]; | ||||
| 
 | ||||
|   hgeometry-combinatorial = | ||||
|     self.callHackageDirect { | ||||
|       pkg = "hgeometry-combinatorial"; | ||||
|       ver = "0.9.0.0"; | ||||
|       sha256 = "12k41wd9fd1y3jd5djwcpwg2s1cva87wh14i0m1yn49zax9wl740"; | ||||
|     } {}; | ||||
| 
 | ||||
|   vinyl = pkgs.haskell.lib.overrideSrc | ||||
|     (pkgs.haskell.lib.markUnbroken super.vinyl) | ||||
|     rec { | ||||
|       src = nixpkgs.fetchzip { | ||||
|         url = "mirror://hackage/vinyl-${version}/vinyl-${version}.tar.gz"; | ||||
|         sha256 = "190ffrmm76fh8fi9afkcda2vldf89y7dxj10434h28mbpq55kgsx"; | ||||
|       }; | ||||
|       version = "0.12.0"; | ||||
|     }; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue