From a139c0757f3d8b080ab1923c5e79d254886a072f Mon Sep 17 00:00:00 2001 From: oakes Date: Sat, 4 Jan 2014 20:59:02 -0500 Subject: [PATCH] Add tiled-map functions --- src/play_clj/core.clj | 2 +- src/play_clj/core_render.clj | 30 ++++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index 654a2d1..60bca30 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -4,7 +4,7 @@ [com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera PerspectiveCamera Texture] [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.renderers BatchTiledMapRenderer diff --git a/src/play_clj/core_render.clj b/src/play_clj/core_render.clj index ba83569..7c48dd1 100644 --- a/src/play_clj/core_render.clj +++ b/src/play_clj/core_render.clj @@ -24,17 +24,31 @@ (.draw ^Stage renderer))) (defn tiled-map-layer - [{:keys [^BatchTiledMapRenderer renderer]} ^String layer] + [{:keys [^BatchTiledMapRenderer renderer]} layer] (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 - [{:keys [^BatchTiledMapRenderer renderer] :as screen} layer x y] - (assert renderer) - (-> (if (or (string? layer) (number? layer)) - ^TiledMapTileLayer (tiled-map-layer screen layer) - ^TiledMapTileLayer layer) - (.getCell x y))) + [screen layer x y] + (.getCell ^TiledMapTileLayer (tiled-map-layer screen layer) x y)) (defmulti renderer :type :default nil)