Move ui listener macros to ui.clj

This commit is contained in:
oakes
2014-05-10 12:54:02 -04:00
parent e0deae642a
commit 7315e1ad1d
3 changed files with 46 additions and 44 deletions

View File

@@ -29,7 +29,7 @@
OrthogonalTiledMapRenderer]
[com.badlogic.gdx.math Vector2 Vector3]
[com.badlogic.gdx.scenes.scene2d Actor Stage]
[com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener Align
[com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener
ChangeListener ClickListener DragListener FocusListener]
[com.badlogic.gdx.utils ScreenUtils Timer$Task]
[play_clj.entities BundleEntity ShapeEntity]))

View File

@@ -119,29 +119,12 @@ in the `screen`."
(zoom [e id d]
(execute-fn! on-ui-zoom :event e :initial-distance id :distance d))))
(defmacro actor-gesture-listener!
"Calls a single method on the [ActorGestureListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ActorGestureListener object#
(u/get-obj listeners# :actor-gesture-listener)]
(u/call! object# ~k ~@options)))
(defn ^:private change-listener
[{:keys [on-ui-changed]} execute-fn!]
(proxy [ChangeListener] []
(changed [e a]
(execute-fn! on-ui-changed :event e :actor a))))
(defmacro change-listener!
"Calls a single method on the [ChangeListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ChangeListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ChangeListener object# (u/get-obj listeners# :change-listener)]
(u/call! object# ~k ~@options)))
(defn ^:private click-listener
[{:keys [on-ui-clicked on-ui-enter on-ui-exit
on-ui-touch-down on-ui-touch-dragged on-ui-touch-up]}
@@ -166,14 +149,6 @@ in the `screen`."
(execute-fn! on-ui-touch-up
:event e :input-x x :input-y y :pointer p :button b))))
(defmacro click-listener!
"Calls a single method on the [ClickListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ClickListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ClickListener object# (u/get-obj listeners# :click-listener)]
(u/call! object# ~k ~@options)))
(defn ^:private drag-listener
[{:keys [on-ui-drag on-ui-drag-start on-ui-drag-stop
on-ui-touch-down on-ui-touch-dragged on-ui-touch-up]}
@@ -196,14 +171,6 @@ in the `screen`."
(dragStop [e x y p]
(execute-fn! on-ui-drag-stop :event e :input-x x :input-y y :pointer p))))
(defmacro drag-listener!
"Calls a single method on the [DragListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^DragListener object# (u/get-obj listeners# :drag-listener)]
(u/call! object# ~k ~@options)))
(defn ^:private focus-listener
[{:keys [on-ui-keyboard-focus-changed on-ui-scroll-focus-changed]}
execute-fn!]
@@ -213,14 +180,6 @@ in the `screen`."
(scrollFocusChanged [e a f]
(execute-fn! on-ui-scroll-focus-changed :event e :actor a :focused? f))))
(defmacro focus-listener!
"Calls a single method on the [FocusListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/FocusListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^FocusListener object# (u/get-obj listeners# :focus-listener)]
(u/call! object# ~k ~@options)))
(defn ^:private ui-listeners
[options execute-fn!]
{:actor-gesture-listener (actor-gesture-listener options execute-fn!)

View File

@@ -10,8 +10,10 @@
Dialog HorizontalGroup Image ImageButton ImageTextButton Label
ScrollPane SelectBox Skin Slider Stack Table TextButton TextField
Tree Tree$Node VerticalGroup WidgetGroup Window]
[com.badlogic.gdx.scenes.scene2d.utils NinePatchDrawable
SpriteDrawable TextureRegionDrawable TiledDrawable]
[com.badlogic.gdx.scenes.scene2d.utils ActorGestureListener
ChangeListener ClickListener DragListener FocusListener
NinePatchDrawable SpriteDrawable TextureRegionDrawable
TiledDrawable]
[com.esotericsoftware.tablelayout Cell]
[play_clj.entities ActorEntity]))
@@ -57,6 +59,47 @@ based on the file at `path`.
[k]
`~(u/gdx-field :scenes :scene2d :utils :Align (u/key->camel k)))
(defmacro actor-gesture-listener!
"Calls a single method on the [ActorGestureListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ActorGestureListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ActorGestureListener object#
(u/get-obj listeners# :actor-gesture-listener)]
(u/call! object# ~k ~@options)))
(defmacro change-listener!
"Calls a single method on the [ChangeListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ChangeListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ChangeListener object# (u/get-obj listeners# :change-listener)]
(u/call! object# ~k ~@options)))
(defmacro click-listener!
"Calls a single method on the [ClickListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/ClickListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^ClickListener object# (u/get-obj listeners# :click-listener)]
(u/call! object# ~k ~@options)))
(defmacro drag-listener!
"Calls a single method on the [DragListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^DragListener object# (u/get-obj listeners# :drag-listener)]
(u/call! object# ~k ~@options)))
(defmacro focus-listener!
"Calls a single method on the [FocusListener](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/FocusListener.html)
in the `screen`."
[screen k & options]
`(let [listeners# (u/get-obj ~screen :ui-listeners)
^FocusListener object# (u/get-obj listeners# :focus-listener)]
(u/call! object# ~k ~@options)))
(defn cell!
"Calls a single method on a [Cell](https://github.com/libgdx/libgdx/blob/master/gdx/src/com/esotericsoftware/tablelayout/Cell.java)."
[^Cell cell & args]