Add tiled-map functions

This commit is contained in:
oakes
2014-01-04 20:59:02 -05:00
parent 33367be7aa
commit a139c0757f
2 changed files with 23 additions and 9 deletions

View File

@@ -4,7 +4,7 @@
[com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera [com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera
PerspectiveCamera Texture] PerspectiveCamera Texture]
[com.badlogic.gdx.graphics.g2d Animation SpriteBatch TextureRegion] [com.badlogic.gdx.graphics.g2d Animation SpriteBatch TextureRegion]
[com.badlogic.gdx.maps MapLayers] [com.badlogic.gdx.maps MapLayer MapLayers]
[com.badlogic.gdx.maps.tiled TiledMap TiledMapTileLayer TmxMapLoader] [com.badlogic.gdx.maps.tiled TiledMap TiledMapTileLayer TmxMapLoader]
[com.badlogic.gdx.maps.tiled.renderers [com.badlogic.gdx.maps.tiled.renderers
BatchTiledMapRenderer BatchTiledMapRenderer

View File

@@ -24,17 +24,31 @@
(.draw ^Stage renderer))) (.draw ^Stage renderer)))
(defn tiled-map-layer (defn tiled-map-layer
[{:keys [^BatchTiledMapRenderer renderer]} ^String layer] [{:keys [^BatchTiledMapRenderer renderer]} layer]
(assert renderer) (assert renderer)
(-> renderer .getMap .getLayers (.get layer))) (if (isa? (type layer) MapLayer)
layer
(-> renderer .getMap .getLayers (.get layer))))
(defn tiled-map-layers
[{:keys [^BatchTiledMapRenderer renderer]}]
(assert renderer)
(let [layers (-> renderer .getMap .getLayers)]
(for [i (range (.getCount layers))]
(.get layers i))))
(defn tiled-map-layer-name
[screen layer]
(.getName ^MapLayer (tiled-map-layer screen layer)))
(defn tiled-map-layer-names
[screen]
(for [layer (tiled-map-layers screen)]
(tiled-map-layer-name screen layer)))
(defn tiled-map-cell (defn tiled-map-cell
[{:keys [^BatchTiledMapRenderer renderer] :as screen} layer x y] [screen layer x y]
(assert renderer) (.getCell ^TiledMapTileLayer (tiled-map-layer screen layer) x y))
(-> (if (or (string? layer) (number? layer))
^TiledMapTileLayer (tiled-map-layer screen layer)
^TiledMapTileLayer layer)
(.getCell x y)))
(defmulti renderer :type :default nil) (defmulti renderer :type :default nil)