diff options
Diffstat (limited to 'src/game.scm')
| -rw-r--r-- | src/game.scm | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/game.scm b/src/game.scm index 193af38..086c2b9 100644 --- a/src/game.scm +++ b/src/game.scm @@ -62,24 +62,29 @@ (define *level* (load-tilemap "assets/level-0.tmx")) (define *level-tileset-texture* (sdl2:create-texture-from-surface *renderer* (tileset-image (tilemap-tileset *level*)))) -(define (draw-tile target tileset tile-id) +(define (draw-tile target tileset tile-id row-num col-num) (let ((tile (tileset-tile tileset tile-id))) - (sdl2:render-copy! *renderer* *level-tileset-texture* (tile-rect tile) - (tile-rect tile)))) + (sdl2:make-rect (* col-num (tileset-tileheight tileset)) + (* row-num (tileset-tilewidth tileset)) + (tileset-tilewidth tileset) + (tileset-tileheight tileset))))) -(define (draw-tilemap-rows draw-fn rows) +(define (draw-tilemap-rows draw-fn rows row-num) (unless (null? rows) - (map draw-fn (car rows)) - (draw-tilemap-row draw-fn (cdr rows)))) + (for-each (lambda (tile-id col-num) (draw-fn tile-id row-num col-num)) + (car rows) + (iota (length (car rows)))) + (draw-tilemap-rows draw-fn (cdr rows) (+ row-num 1)))) (define (draw-tilemap target tilemap) (let ((map-layer (layer-map (list-ref (tilemap-layers tilemap) 0))) (tileset (tilemap-tileset tilemap))) (draw-tilemap-rows - (lambda (tile-id) (draw-tile target tileset tile-id)) - map-layer))) + (lambda (tile-id row-num col-num) (draw-tile target tileset tile-id row-num col-num)) + map-layer + 0))) (set! (sdl2:render-draw-color *renderer*) +background-color+) (sdl2:render-clear! *renderer*) |
