(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