e76567b9e7
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
32 lines
996 B
Nix
32 lines
996 B
Nix
{ nixpkgs ? import ./nixpkgs.nix {} }:
|
|
let inherit (nixpkgs) pkgs;
|
|
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";
|
|
};
|
|
}
|