aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game.scm5
-rw-r--r--src/tilemap.scm40
2 files changed, 32 insertions, 13 deletions
diff --git a/src/game.scm b/src/game.scm
index d1e38f0..1e9da8b 100644
--- a/src/game.scm
+++ b/src/game.scm
@@ -37,7 +37,7 @@
(if (and +vsync?+ (not +software-mode?+)) ; vsync doesn't work with software rendering
(sdl2:set-hint! 'render-vsync "1"))
-(define *window* (sdl2:create-window! "Mackerel Knight"
+(define *window* (sdl2:create-window! "MacroKnight"
'centered 'centered
+screen-width+ +screen-height+
(if *fullscreen?* '(fullscreen) '())))
@@ -52,7 +52,8 @@
#f))
(define *level* (load-tilemap "assets/level-0.tmx"))
-(define (draw-tile target tileset tile-id))
+(define (draw-tile target tileset tile-id)
+ 123)
(set! (sdl2:render-draw-color *renderer*) +background-color+)
(sdl2:render-clear! *renderer*)
diff --git a/src/tilemap.scm b/src/tilemap.scm
index 52d1057..61a06ef 100644
--- a/src/tilemap.scm
+++ b/src/tilemap.scm
@@ -4,12 +4,14 @@
(chicken io)
(chicken base)
(chicken string)
+ (chicken format)
(chicken process-context)
(chicken pathname)
(chicken pretty-print)
(srfi 1)
expat
- defstruct)
+ defstruct
+ (prefix sdl2-image "img:"))
(defstruct tileset
tilewidth
@@ -83,9 +85,18 @@
(define (load-tileset file-name)
(call-with-input-file file-name
(lambda (port)
- (parse-tileset (read-string #f port))
- ;; Load up the image from SDL.
- )))
+ (let* ((tileset (parse-tileset (read-string #f port)))
+ (image-source (tileset-image-source tileset))
+ (base-path (pathname-directory file-name))
+ (img-to-load (if (absolute-pathname? image-source)
+ image-source
+ (pathname-replace-directory
+ image-source
+ (if (pathname-directory image-source)
+ (format "~a/~a" base-path (pathname-directory image-source))
+ base-path)))))
+ (tileset-image-set! tileset (img:load img-to-load))
+ tileset))))
(define (parse-tilemap string-tilemap)
(let ((parser (expat:make-parser))
@@ -128,10 +139,19 @@
(define (load-tilemap file-name)
(call-with-input-file file-name
(lambda (port)
- (let ((tilemap (parse-tilemap (read-string #f port))))
- (tilemap-tileset-set! tilemap (load-tileset (tilemap-tileset-source tilemap))))
-
- )))
+ (let* ((tilemap (parse-tilemap (read-string #f port)))
+ (base-path (pathname-directory file-name))
+ (tileset-source (tilemap-tileset-source tilemap)))
+ (tilemap-tileset-set! tilemap (load-tileset
+ (if (absolute-pathname? tileset-source)
+ tileset-source
+ (pathname-replace-directory
+ tileset-source
+ (if (pathname-directory tileset-source)
+ (format "~a/~a" base-path (pathname-directory tileset-source))
+ base-path))
+ )))
+ tilemap))))
(when #f
@@ -164,9 +184,7 @@
"))
(tilemap-tileset (parse-tilemap txt)))
- (load-tilemap "assets/level-0.tmx")
-
- (current-directory)
+ (tileset-image (tilemap-tileset (load-tilemap "assets/level-0.tmx")))
)