From 183b1792b4baa6a50ef839b0dbf2b7618bf25c95 Mon Sep 17 00:00:00 2001 From: Gene Pasquet Date: Sun, 5 Apr 2026 16:55:57 +0100 Subject: feat: add render-scene! to renderer — draw full scene in one call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renderer.scm | 11 +++++++++++ tests/renderer-test.scm | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) 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") -- cgit v1.2.3