Map parsing implementation
This commit is contained in:
parent
3a03af4b12
commit
4d0fdbfc39
|
@ -0,0 +1,26 @@
|
|||
{:name :tilemap
|
||||
:validator
|
||||
[:map {:closed true}
|
||||
[:map/width number?]
|
||||
[:map/height number?]
|
||||
[:map/tilesets
|
||||
[:sequential
|
||||
[:map {:closed true}
|
||||
[:tileset/start-index number?]
|
||||
[:tileset/name keyword?]]]]
|
||||
[:tiles/width number?]
|
||||
[:tiles/height number?]
|
||||
[:map/layers
|
||||
[:sequential
|
||||
[:map {:closed true}
|
||||
[:layer/id number?]
|
||||
[:layer/name string?]
|
||||
[:layer/width number?]
|
||||
[:layer/height number?]
|
||||
[:layer/tiles
|
||||
[:sequential
|
||||
[:map {:closed true}
|
||||
[:horizontal? boolean?]
|
||||
[:vertical? boolean?]
|
||||
[:diagonal? boolean?]
|
||||
[:id number?]]]]]]]]}
|
|
@ -1,6 +1,6 @@
|
|||
{:name :tileset
|
||||
:validator
|
||||
[:map
|
||||
[:map {:closed true}
|
||||
[:tileset/name keyword?]
|
||||
[:tiles/width integer?]
|
||||
[:tiles/height integer?]
|
||||
|
|
|
@ -61,17 +61,26 @@
|
|||
{:tileset/start-index (-> entry :attrs :firstgid)
|
||||
:tileset/name (:tileset/name (load-tileset (-> entry :attrs :source)))})
|
||||
entries)
|
||||
:layer (recur (update tilemap-map :layers conj
|
||||
:layer (recur (update tilemap-map :map/layers conj
|
||||
{:layer/id (-> entry :attrs :id)
|
||||
:layer/name (-> entry :attrs :name)
|
||||
:layer/width (-> entry :attrs :width)
|
||||
:layer/height (-> entry :attrs :height)
|
||||
:layer/tiles (-> entry :content first :content first)})
|
||||
:layer/tiles (->> entry :content first :content first (map ts/tile-id->map))})
|
||||
entries)
|
||||
nil tilemap-map))
|
||||
|
||||
(defn load-tilemap* [filename]
|
||||
{:post [(validation/validate :tilemap %)]}
|
||||
(let [raw-tilemap (load-raw-tilemap filename)]
|
||||
(-> raw-tilemap
|
||||
tilemap-basemap
|
||||
(tilemap-layer (:content raw-tilemap)))))
|
||||
|
||||
(defstate tilemap
|
||||
:start (atom {}))
|
||||
|
||||
(defn load-tilemap [filename]
|
||||
(let [tilemap-map (load-tilemap* filename)]
|
||||
(reset! tilemap tilemap-map)
|
||||
tilemap-map))
|
||||
|
|
Loading…
Reference in New Issue