aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--renderer.scm11
-rw-r--r--tests/renderer-test.scm20
2 files changed, 31 insertions, 0 deletions
diff --git a/renderer.scm b/renderer.scm
index e415394..e2d2c5a 100644
--- a/renderer.scm
+++ b/renderer.scm
@@ -85,4 +85,15 @@
(sdl2:render-copy! renderer texture #f
(sdl2:make-rect x y w h))))
+ ;; --- Scene drawing ---
+
+ (define (render-scene! renderer scene)
+ (let ((camera (scene-camera scene))
+ (tilemap (scene-tilemap scene))
+ (tileset-texture (scene-tileset-texture scene))
+ (tileset (tilemap-tileset (scene-tilemap scene)))
+ (entities (scene-entities scene)))
+ (draw-tilemap renderer camera tileset-texture tilemap)
+ (draw-entities renderer camera tileset tileset-texture entities)))
+
) ;; end module renderer
diff --git a/tests/renderer-test.scm b/tests/renderer-test.scm
index b771847..fb91f54 100644
--- a/tests/renderer-test.scm
+++ b/tests/renderer-test.scm
@@ -89,4 +89,24 @@
'()
(entity-flip (list #:x 0))))
+(test-group "render-scene!"
+ (let* ((cam (make-camera x: 0 y: 0))
+ (tileset (make-tileset tilewidth: 16 tileheight: 16
+ spacing: 0 tilecount: 100 columns: 10
+ image-source: "" image: #f))
+ (layer (make-layer name: "ground" width: 2 height: 2
+ map: '((1 2) (3 4))))
+ (tilemap (make-tilemap width: 2 height: 2
+ tilewidth: 16 tileheight: 16
+ tileset-source: ""
+ tileset: tileset
+ layers: (list layer)
+ objects: '()))
+ (scene (make-scene entities: '()
+ tilemap: tilemap
+ camera: cam
+ tileset-texture: #f)))
+ (test-assert "does not crash on valid scene"
+ (begin (render-scene! #f scene) #t))))
+
(test-end "renderer")