diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index 394d33c..00c31f8 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -4,6 +4,7 @@ (:import [com.badlogic.gdx Application Audio Files Game Gdx Graphics Input InputMultiplexer InputProcessor Net Screen] [com.badlogic.gdx.audio Sound] + [com.badlogic.gdx.assets AssetManager] [com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera PerspectiveCamera VertexAttributes$Usage] [com.badlogic.gdx.graphics.g2d NinePatch ParticleEffect SpriteBatch diff --git a/src/play_clj/core_global.clj b/src/play_clj/core_global.clj index 8c5f76a..3de25a1 100644 --- a/src/play_clj/core_global.clj +++ b/src/play_clj/core_global.clj @@ -170,18 +170,36 @@ (loader :skin \"uiskin.json\") (loader :sound \"hit.ogg\") (loader :texture \"monster.png\")" - [type path & options] - `(let [object# (~(loader-init type) (if (string? ~path) - (files! :internal ~path) - ~path))] + [type resolver & options] + `(let [object# (~(loader-init type) ~resolver)] (u/calls! object# ~@options))) (defmacro loader! - "Calls a static method in a subclass of [AsynchronousAssetLoader](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/AsynchronousAssetLoader.html) + "Calls a single method in a subclass of [AsynchronousAssetLoader](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/AsynchronousAssetLoader.html) - (attribute! :color :create-diffuse (color :blue))" - [type k & options] - `(~(u/gdx-field :graphics :g3d :attributes - (str (u/key->pascal type) "Attribute") - (u/key->camel k)) - ~@options)) + (loader! object :load \"map.tmx\")" + [object & options] + `(u/call! ~object ~@options)) + +(defn asset-manager* + "The function version of `asset-manager`" + ([] + (AssetManager.)) + ([resolver] + (AssetManager. resolver))) + +(defmacro asset-manager + "Returns an [AssetManager](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/AssetManager.html) + + (asset-manager)" + [& options] + `(let [^AssetManager object# (asset-manager*)] + (u/calls! object# ~@options))) + +(defmacro asset-manager! + "Calls a single method in an `asset-manager` + + (asset-manager! object :clear)" + [object k & options] + `(let [^AssetManager object# ~object] + (u/call! object# ~k ~@options)))