diff options
| -rw-r--r-- | renderer.scm | 11 | ||||
| -rw-r--r-- | tests/renderer-test.scm | 20 |
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") |
