Remove loader macros and improve docstrings
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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*
|
||||
([]
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user