aboutsummaryrefslogtreecommitdiff
path: root/src/tilemap.scm
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-06-29 00:33:14 +0100
committerGene Pasquet <dev@etenil.net>2025-10-30 00:19:15 +0000
commita492f4ac690ec9f0c75f6829529eea06ce067b23 (patch)
treeb1dd0d668bb5c8b3abc083e84773e46601a84e41 /src/tilemap.scm
parent114a81a7761e098ea34e2a4c27a0ec6e384c720d (diff)
fix tilesets and build
Diffstat (limited to 'src/tilemap.scm')
-rw-r--r--src/tilemap.scm40
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")))
)