diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-06-29 00:33:14 +0100 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-10-30 00:19:15 +0000 |
| commit | a492f4ac690ec9f0c75f6829529eea06ce067b23 (patch) | |
| tree | b1dd0d668bb5c8b3abc083e84773e46601a84e41 /src/tilemap.scm | |
| parent | 114a81a7761e098ea34e2a4c27a0ec6e384c720d (diff) | |
fix tilesets and build
Diffstat (limited to 'src/tilemap.scm')
| -rw-r--r-- | src/tilemap.scm | 40 |
1 files changed, 29 insertions, 11 deletions
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"))) ) |
