From a492f4ac690ec9f0c75f6829529eea06ce067b23 Mon Sep 17 00:00:00 2001 From: Gene Pasquet Date: Sun, 29 Jun 2025 00:33:14 +0100 Subject: fix tilesets and build --- src/tilemap.scm | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) (limited to 'src/tilemap.scm') 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"))) ) -- cgit v1.2.3