Remove loader macros and improve docstrings

This commit is contained in:
oakes
2014-05-16 18:24:43 -04:00
parent a8ea005a63
commit 02bfa2393c
5 changed files with 20 additions and 78 deletions

View File

@@ -7,7 +7,10 @@
InputMultiplexer InputProcessor Net Preferences Screen]
[com.badlogic.gdx.audio Sound]
[com.badlogic.gdx.assets AssetManager]
[com.badlogic.gdx.assets.loaders AsynchronousAssetLoader]
[com.badlogic.gdx.assets.loaders AsynchronousAssetLoader
ParticleEffectLoader]
[com.badlogic.gdx.assets.loaders.resolvers
InternalFileHandleResolver]
[com.badlogic.gdx.files FileHandle]
[com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera
PerspectiveCamera Pixmap Pixmap$Format PixmapIO Texture

View File

@@ -55,7 +55,14 @@ complicated shapes. If you use `assoc` to set the overall :x and :y of the
; create an empty shape, then set it to a green rectangle
(shape (shape :filled)
:set-color (color :green)
:rect 0 0 10 30)"
:rect 0 0 10 30)
; create a green rectangle at 10,10 and rotate it 45 degrees
(assoc (shape :filled
:set-color (color :green)
:rect 0 0 10 30)
:x 10
:y 10
:angle 45)"
[type & options]
(when (seq (clojure.set/intersection #{:begin :end} (set options)))
(-> "No need to call :begin or :end, because it's done for you."

View File

@@ -135,70 +135,15 @@ found."
; assets
(defn ^:private loader-class
[k]
(cond
(contains? #{:atlas-tmx-map :tmx-map} k)
(u/gdx :maps :tiled (str (u/key->pascal k) "Loader"))
(contains? #{:g3d-model :obj} k)
(u/gdx :graphics :g3d :loader (str (u/key->pascal k) "Loader"))
:else
(u/gdx :assets :loaders (str (u/key->pascal k) "Loader"))))
(defmacro loader
"Returns a subclass of [AssetLoader](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/AssetLoader.html).
(loader :atlas-tmx-map (resolver :internal-file-handle))
(loader :bitmap-font (resolver :internal-file-handle))
(loader :g3d-model (resolver :internal-file-handle))
(loader :model (resolver :internal-file-handle))
(loader :music (resolver :internal-file-handle))
(loader :obj (resolver :internal-file-handle))
(loader :pixmap (resolver :internal-file-handle))
(loader :skin (resolver :internal-file-handle))
(loader :sound (resolver :internal-file-handle))
(loader :texture (resolver :internal-file-handle))
(loader :tmx-map (resolver :internal-file-handle))
(loader :tmx-map
(resolver :internal-file-handle)
(load [file-name] nil))"
[type resolver & options]
`(proxy [~(loader-class type)] [~resolver] ~@options))
(defmacro loader!
"Calls a single method in a subclass of [AsynchronousAssetLoader](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/AsynchronousAssetLoader.html).
(loader! object :tmx-map :load \"map.tmx\")"
[object type & options]
`(let [^AsynchronousAssetLoader object# ~object]
(u/call! object# ~@options)))
(defn ^:private resolver-class
[k]
(u/gdx :assets :loaders :resolvers (str (u/key->pascal k) "Resolver")))
(defmacro resolver
"Returns an implementation of [FileHandleResolver](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/assets/loaders/FileHandleResolver.html).
(resolver :internal-file-handle)
(resolver :internal-file-handle
(resolve [file-name]
(files! :internal file-name)))"
[type & options]
`(proxy [~(resolver-class type)] [] ~@options))
(defn ^:private set-loaders!
([am]
(set-loaders! am (resolver :internal-file-handle)))
(set-loaders! am (InternalFileHandleResolver.)))
([^AssetManager am res]
(->> (loader :tmx-map res)
(.setLoader am TiledMap))
(->> (loader :particle-effect
res
(load [am file-name fh param]
(doto (ParticleEffect.)
(.load fh (.parent fh)))))
(.setLoader am ParticleEffect))))
(.setLoader am TiledMap (TmxMapLoader. res))
(.setLoader am ParticleEffect (proxy [ParticleEffectLoader] [res]
(load [am file-name fh param]
(doto (ParticleEffect.)
(.load fh (.parent fh))))))))
(defn asset-manager*
([]

View File

@@ -64,11 +64,9 @@
:set-region 0 0 100 100)
; create a new texture based on an existing one
(texture (texture \"image.png\"))
; rotate a texture 45 degress counterclockwise around the bottom-left corner
; rotate a texture 45 degress
(assoc (texture \"image.png\")
:angle 45
:origin-x 0
:origin-y 0)"
:angle 45)"
[arg & options]
`(let [entity# (texture* ~arg)]
(u/calls! ^TextureRegion (u/get-obj entity# :object) ~@options)