From 4d9d7ea2b6f12f33eee9404b1cdff9f05b7fb32f Mon Sep 17 00:00:00 2001 From: Gene Pasquet Date: Sat, 21 Jun 2025 03:03:17 +0100 Subject: Start coding tilemap parser --- src/tilemap.scm | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/tilemap.scm (limited to 'src') diff --git a/src/tilemap.scm b/src/tilemap.scm new file mode 100644 index 0000000..a2833db --- /dev/null +++ b/src/tilemap.scm @@ -0,0 +1,54 @@ +(module tilemap +* +(import scheme + (chicken io) + expat + defstruct) + +(defstruct tileset + tilewidth + tileheight + spacing + tilecount + columns + image) + +(defstruct layer + name + width + height + map) + +(defstruct object + name + type + x + y + width + height + properties) + +(defstruct tilemap + width + height + tilewidth + tileheight + tileset + layers + objects) + +(define (parse-tilemap string-tilemap) + (let ((parser (expat:make-parser)) + (current-tag "") + (tilemap (tilemap))) + (expat:set-start-handler! parser (lambda (tag attrs) + (set! current-tag tag))) + (expat:set-end-handler! parser (lambda (tag) #f)) + (expat:set-character-data-handler! parser (lambda (text) #f)))) + +(define (load-tilemap file-name) + (call-with-input-file file-name + (lambda (port) + (parse-tilemap (read-string port))))) + +) ;; End tilemap module -- cgit v1.2.3