aboutsummaryrefslogtreecommitdiff
path: root/src/game.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.scm')
-rw-r--r--src/game.scm31
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*)