diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-06-21 03:03:17 +0100 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-06-21 03:03:17 +0100 |
| commit | 4d9d7ea2b6f12f33eee9404b1cdff9f05b7fb32f (patch) | |
| tree | 5081b4cd9b54a752e95c6f15ad426bee869877ca | |
| parent | 8937277a79cc5a24b406cf15f411992ac2e7241f (diff) | |
Start coding tilemap parser
| -rw-r--r-- | src/tilemap.scm | 54 |
1 files changed, 54 insertions, 0 deletions
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 |
