(define-module (game util assets)
  #:use-module (ice-9 ftw)
  #:use-module (ice-9 textual-ports)
  #:use-module (chickadee graphics texture)
  #:use-module (chickadee graphics color)
  #:export (assets-load assets-file-name tile-texture tile-atlas hero-texture hero-atlas assets-map-levels)
  
  )

(define tile-texture #f)
(define tile-atlas #f)

(define hero-texture #f)
(define hero-atlas #f)

(define (assets-location)
  (pk "Assets location: "
      (if (current-filename)
          (string-append (dirname (current-filename)) "/../../assets")
          (or (getenv "ASSET_DIR") "." )))
  )

(define (assets-file-name . names)
  "Return the full path of a file in the assets directory. The file is
   specified by a list of names, which are joined together.  The
   ASSET_DIR environment variable can be used to specify a prefix to the
   asset directory."
  (string-append (assets-location) "/" (string-join names "/")))


(define (read-level-map filename)
  (call-with-input-file filename get-string-all))

(define (assets-map-levels f)
  (map f 
       (map (lambda (filename)(assets-file-name "levels" filename))
            (scandir (assets-file-name "levels") 
                     (lambda (filename) (string-suffix? ".map" filename ))))))

(define (assets-load-image filename)
  (load-image (assets-file-name "images" filename)))

(define (assets-load)
  (set! tile-texture (assets-load-image "simples_pimples.png"))
  (set! tile-atlas (split-texture tile-texture 16 16))
  
  (set! hero-texture (assets-load-image "lr_penguin2.png"))
  (set! hero-atlas (split-texture hero-texture 32 32)))
