From cd9cebb8e05c75f09066eb43c3612ff11a525822 Mon Sep 17 00:00:00 2001 From: oakes Date: Wed, 9 Apr 2014 12:11:08 -0400 Subject: [PATCH] Add basic-map-layer --- doclet/resources/classes.edn | 2 ++ src/play_clj/core_graphics.clj | 28 ++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/doclet/resources/classes.edn b/doclet/resources/classes.edn index f8b521a..97e77e0 100644 --- a/doclet/resources/classes.edn +++ b/doclet/resources/classes.edn @@ -118,6 +118,8 @@ "joint!" :methods} "Label" {"label" :methods "label!" :methods} + "MapLayer" {"basic-map-layer" :methods + "basic-map-layer!" :methods} "Material" {"material" :methods "material!" :methods} "MathUtils" {"math!" :static-methods} diff --git a/src/play_clj/core_graphics.clj b/src/play_clj/core_graphics.clj index 0bc1ad2..0f889a0 100644 --- a/src/play_clj/core_graphics.clj +++ b/src/play_clj/core_graphics.clj @@ -129,8 +129,8 @@ from the tiled map in `screen` that matches `layer`. "Returns a list with strings cooresponding to the name of each layer in the tiled map in `screen`." [screen] - (for [layer (tiled-map-layers screen)] - (tiled-map-layer! layer :get-name))) + (for [^MapLayer layer (tiled-map-layers screen)] + (.getName layer))) (defn tiled-map-cell* ([] @@ -155,6 +155,30 @@ from the tiled map in `screen` from the given `layer` and position `x` and `y`. [object k & options] `(u/call! ^TiledMapTileLayer$Cell ~object ~k ~@options)) +(defn basic-map-layer* + ([] + (MapLayer.)) + ([screen layer] + (tiled-map-layer* screen layer))) + +(defmacro basic-map-layer + "Returns a [MapLayer](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/maps/MapLayer.html) +from the tiled map in `screen` that matches `layer`. This is necessary for +non-tile layers, like object and image layers. + + (basic-map-layer screen \"water\")" + [screen layer & options] + `(let [^MapLayer object# (basic-map-layer* ~screen ~layer)] + (u/calls! object# ~@options))) + +(defmacro basic-map-layer! + "Calls a single method on a `basic-map-layer`. + + (basic-map-layer! (basic-map-layer screen \"water\") + :set-visible false)" + [object k & options] + `(u/call! ^MapLayer ~object ~k ~@options)) + (defn ^:private tiled-map-prop [screen] (let [^BatchTiledMapRenderer renderer (u/get-obj screen :renderer)