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

@@ -13,13 +13,11 @@
"gdx-array-map!" :methods}
"AssetManager" {"asset-manager" :methods
"asset-manager!" :methods}
"AtlasTmxMapLoader" {"loader! :atlas-tmx-map" :methods}
"Audio" {"audio!" :methods}
"Bezier" {"bezier" :methods
"bezier!" :methods}
"BitmapFont" {"bitmap-font" :methods
"bitmap-font!" :methods}
"BitmapFontLoader" {"loader! :bitmap-font" :methods}
"BlendingAttribute" {"attribute :blending" :constructors
"attribute-type :blending" :static-fields
"attribute! :blending" :static-methods}
@@ -86,7 +84,6 @@
"FrictionJointDef" {"joint-def :friction" :fields}
"Frustum" {"frustum" :methods
"frustum!" :methods}
"G3dModelLoader" {"loader! :g3d-model" :methods}
"GearJointDef" {"joint-def :gear" :fields}
"GeometryUtils" {"geometry!" :static-methods}
"GestureDetector" {"gesture-detector!" :methods}
@@ -146,9 +143,7 @@
"model-builder!" :methods}
"ModelInstance" {"model" :methods
"model!" :methods}
"ModelLoader" {"loader! :model" :methods}
"MouseJointDef" {"joint-def :mouse" :fields}
"MusicLoader" {"loader! :music" :methods}
"Net" {"net!" :methods}
"NinePatch" {"nine-patch" :methods
"nine-patch!" :methods}
@@ -157,14 +152,12 @@
"orthogonal-tiled-map!" :methods}
"OrthographicCamera" {"orthographic" :methods
"orthographic!" :methods}
"ObjLoader" {"loader! :obj" :methods}
"ParticleEffect" {"particle-effect" :methods
"particle-effect!" :methods}
"PerspectiveCamera" {"perspective" :methods
"perspective!" :methods}
"Pixmap" {"pixmap" :methods
"pixmap!" :methods}
"PixmapLoader" {"loader! :pixmap" :methods}
"Plane" {"plane" :methods
"plane!" :methods}
"Plane.PlaneSide" {"plane-side" :static-fields}
@@ -203,12 +196,10 @@
"ShapeRenderer.ShapeType" {"shape-type" :static-fields}
"Skin" {"skin" :methods
"skin!" :methods}
"SkinLoader" {"loader! :skin" :methods}
"Slider" {"slider" :methods
"slider!" :methods}
"Sound" {"sound" :methods
"sound!" :methods}
"SoundLoader" {"loader! :sound" :methods}
"Sphere" {"sphere" :methods
"sphere!" :methods}
"SplitPane.SplitPaneStyle" {"style :split-pane" :constructors}
@@ -230,14 +221,12 @@
"TextField" {"text-field" :methods
"text-field!" :methods}
"TextField.TextFieldStyle" {"style :text-field" :constructors}
"TextureLoader" {"loader! :texture" :methods}
"TextureMapObject" {"map-object :texture" :methods}
"TextureRegion" {"texture" :methods
"texture!" :methods}
"TextureRegionDrawable" {"drawable :texture-region" :constructors}
"Tree" {"tree" :methods
"tree!" :methods}
"TmxMapLoader" {"loader! :tmx-map" :methods}
"Touchpad.TouchpadStyle" {"style :touchpad" :constructors}
"TiledMap" {"tiled-map" :methods
"tiled-map!" :methods}

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)