summaryrefslogtreecommitdiff
path: root/examples/life.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/life.scm')
-rw-r--r--examples/life.scm50
1 files changed, 27 insertions, 23 deletions
diff --git a/examples/life.scm b/examples/life.scm
index 763e5d4..4e747ec 100644
--- a/examples/life.scm
+++ b/examples/life.scm
@@ -68,17 +68,17 @@
(define tile-size 32)
(define window-res (vector2 448 480))
-(define tileset
- (load-tileset "mines/images/tiles.png" 32 32))
+(define-signal tileset
+ (on-start (load-tileset "mines/images/tiles.png" 32 32)))
-(define alive-texture
+(define (alive-texture tileset)
(tileset-ref tileset 12))
-(define empty-texture
+(define (empty-texture tileset)
(tileset-ref tileset 13))
-(define batch
- (make-sprite-batch (expt 14 2)))
+(define-signal batch
+ (on-start (make-sprite-batch (expt 14 2))))
;;;
;;; State
@@ -296,23 +296,27 @@ If there is no neighbor on an edge, the board wraps around"
;; Model of the tile grid
(define-signal tiles-view
(signal-let ((board board)
- (board-size board-size))
- (lambda (gfx)
- (with-sprite-batch batch gfx
- (enumerate-each
- (lambda (row y)
- (enumerate-each
- (lambda (alive? x)
- (let ((rect (rect-move sprite-rect
- (tile-pos y x board-size tile-size))))
- (sprite-batch-add! batch
- gfx
- (if alive?
- alive-texture
- empty-texture)
- rect)))
- (vlist->list row)))
- (vlist->list board))))))
+ (board-size board-size)
+ (batch batch)
+ (tileset tileset))
+ (if tileset
+ (lambda (gfx)
+ (with-sprite-batch batch gfx
+ (enumerate-each
+ (lambda (row y)
+ (enumerate-each
+ (lambda (alive? x)
+ (let ((rect (rect-move sprite-rect
+ (tile-pos y x board-size tile-size))))
+ (sprite-batch-add! batch
+ gfx
+ (if alive?
+ (alive-texture tileset)
+ (empty-texture tileset))
+ rect)))
+ (vlist->list row)))
+ (vlist->list board))))
+ render-nothing)))
(define-signal camera
(signal-let ((running? simulation-running?))