diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-10-30 00:55:37 +0000 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-11-08 04:02:10 +0000 |
| commit | 9072c9bf8564e2c35d9c1b60914656b979d1b2bc (patch) | |
| tree | 4d41dd2c3d27b296a0ec8fbd6ebb7564a3f1d79d /src/game.scm | |
| parent | 6beb72810fda95b8b2e6f549a6c110604351448a (diff) | |
render the tileset
Diffstat (limited to 'src/game.scm')
| -rw-r--r-- | src/game.scm | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/game.scm b/src/game.scm index 1e9da8b..f9f6b56 100644 --- a/src/game.scm +++ b/src/game.scm @@ -5,6 +5,7 @@ (chicken condition) (chicken pretty-print) (srfi 1) + (srfi 12) miscmacros (prefix sdl2 "sdl2:") (prefix sdl2-ttf "ttf:") @@ -41,8 +42,16 @@ 'centered 'centered +screen-width+ +screen-height+ (if *fullscreen?* '(fullscreen) '()))) -(define *renderer* (sdl2:create-renderer! *window* -1 - (if +software-mode?+ '(software) '(accelerated)))) + +;; (define *renderer* +;; (with-handlers [(lambda (c) +;; (display "Failed to initialise renderer") +;; (sdl2:create-renderer! *window* -1 +;; '(software)))] +;; (sdl2:create-renderer! *window* -1 +;; (if +software-mode?+ '(software) '(accelerated))))) + +(define *renderer* (sdl2:create-renderer! *window* -1 '(software))) (define *font* (ttf:open-font "DejaVuSans.ttf" 12)) (define *text-color* (sdl2:make-color 255 255 255)) @@ -51,9 +60,22 @@ (sdl2:joystick-open! 0) #f)) (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) - 123) + (let ((tile (tileset-tile tileset tile-id))) + (sdl2:render-copy! *renderer* *level-tileset-texture* + (tile-rect tile) (tile-rect tile)))) + +(define (draw-tilemap-row draw-fn rows) + (unless (null? rows) + (map draw-fn (car rows)) + (draw-tilemap-row draw-fn (cdr rows)))) + +(define (draw-tilemap target tilemap) + (let ((map-layer (layer-map (list-ref (tilemap-layers tilemap) 0))) + (tileset (tilemap-tileset tilemap))) + (draw-tilemap-row (lambda (tile-id) (draw-tile target tileset tile-id)) map-layer))) (set! (sdl2:render-draw-color *renderer*) +background-color+) (sdl2:render-clear! *renderer*) @@ -72,8 +94,9 @@ (eq? (sdl2:keyboard-event-sym event) 'escape)) (exit-main-loop!)))) + (draw-tilemap *renderer* *level*) + (sdl2:render-present! *renderer*) - (sdl2:delay! 10))) (sdl2:joystick-close *joystick*) |
