From 02bfa2393c4795b2f166ce912b5d0e1e8b735806 Mon Sep 17 00:00:00 2001 From: oakes Date: Fri, 16 May 2014 18:24:43 -0400 Subject: [PATCH] Remove loader macros and improve docstrings --- doclet/resources/classes.edn | 11 ------ src/play_clj/core.clj | 5 ++- src/play_clj/core_graphics.clj | 9 ++++- src/play_clj/core_utils.clj | 67 +++------------------------------- src/play_clj/g2d.clj | 6 +-- 5 files changed, 20 insertions(+), 78 deletions(-) diff --git a/doclet/resources/classes.edn b/doclet/resources/classes.edn index 2c92be2..7e7e8c6 100644 --- a/doclet/resources/classes.edn +++ b/doclet/resources/classes.edn @@ -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} diff --git a/src/play_clj/core.clj b/src/play_clj/core.clj index d8c05b8..a293111 100644 --- a/src/play_clj/core.clj +++ b/src/play_clj/core.clj @@ -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 diff --git a/src/play_clj/core_graphics.clj b/src/play_clj/core_graphics.clj index eb05e2d..a9d03ba 100644 --- a/src/play_clj/core_graphics.clj +++ b/src/play_clj/core_graphics.clj @@ -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." diff --git a/src/play_clj/core_utils.clj b/src/play_clj/core_utils.clj index 6fbf3dc..c517f81 100644 --- a/src/play_clj/core_utils.clj +++ b/src/play_clj/core_utils.clj @@ -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* ([] diff --git a/src/play_clj/g2d.clj b/src/play_clj/g2d.clj index 07c8966..7455fe8 100644 --- a/src/play_clj/g2d.clj +++ b/src/play_clj/g2d.clj @@ -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)