]> git.jsancho.org Git - dungeon-master.git/blobdiff - dungeon-master/generators/town.scm
Voronoi meshes (uncompleted)
[dungeon-master.git] / dungeon-master / generators / town.scm
diff --git a/dungeon-master/generators/town.scm b/dungeon-master/generators/town.scm
new file mode 100644 (file)
index 0000000..745a642
--- /dev/null
@@ -0,0 +1,34 @@
+(define-module (dungeon-master generators town)
+  #:use-module (dungeon-master geom voronoi)
+  #:use-module (dungeon-master geom point)
+  #:export (generate))
+
+(define (random-bool)
+  (= (random 2) 1))
+
+(define pi 3.141592654)
+
+(define (generate patches)
+  "City generator from https://github.com/watabou/TownGeneratorOS/blob/master/Source/com/watabou/towngenerator/building/Model.hx"
+  (set! *random-state* (random-state-from-platform))
+  (when (= patches -1) (set! patches 15))
+  (build-patches patches))
+
+(define (build-patches patches)
+  (define* (get-points n seed #:optional (l '()))
+    (cond ((> n 0)
+           (let* ((a (+ seed (* (sqrt n) 5)))
+                  (r (if (= n 0)
+                         0
+                         (+ 10 (* n (+ 2 (random:exp))))))
+                  (point (make-point
+                          (* (cos a) r)
+                          (* (sin a) r))))
+             (get-points (- n 1) seed (cons point l))))
+          (else
+           l)))
+
+  (let* ((sa (* (random:exp) 2 pi))
+         (points (get-points (* 8 patches) sa))
+         (voronoi (make-voronoi-mesh points)))
+    voronoi))