Put listeners in a vector and improve UI listeners
This commit is contained in:
@@ -54,6 +54,8 @@
|
|||||||
flatten
|
flatten
|
||||||
(remove nil?)
|
(remove nil?)
|
||||||
(compare-and-set! entities entities-list)))))
|
(compare-and-set! entities entities-list)))))
|
||||||
|
listeners [(input-processor options execute-fn!)
|
||||||
|
(gesture-detector options execute-fn!)]
|
||||||
ui-listeners [(ui-gesture-listener options execute-fn!)
|
ui-listeners [(ui-gesture-listener options execute-fn!)
|
||||||
(ui-change-listener options execute-fn!)
|
(ui-change-listener options execute-fn!)
|
||||||
(ui-click-listener options execute-fn!)
|
(ui-click-listener options execute-fn!)
|
||||||
@@ -77,8 +79,7 @@
|
|||||||
:pause #(execute-fn! on-pause)
|
:pause #(execute-fn! on-pause)
|
||||||
:resize #(execute-fn! on-resize :width %1 :height %2)
|
:resize #(execute-fn! on-resize :width %1 :height %2)
|
||||||
:resume #(execute-fn! on-resume)
|
:resume #(execute-fn! on-resume)
|
||||||
:input-processor (input-processor options execute-fn!)
|
:listeners listeners}))
|
||||||
:gesture-detector (gesture-detector options execute-fn!)}))
|
|
||||||
|
|
||||||
(defmacro defscreen
|
(defmacro defscreen
|
||||||
[n & {:keys [] :as options}]
|
[n & {:keys [] :as options}]
|
||||||
@@ -102,9 +103,9 @@
|
|||||||
[^Game game & screens]
|
[^Game game & screens]
|
||||||
(let [add-inputs! (fn []
|
(let [add-inputs! (fn []
|
||||||
(input! :set-input-processor (InputMultiplexer.))
|
(input! :set-input-processor (InputMultiplexer.))
|
||||||
(doseq [screen screens]
|
(doseq [{:keys [listeners]} screens]
|
||||||
(add-input! (:input-processor screen))
|
(doseq [listener listeners]
|
||||||
(add-input! (:gesture-detector screen))))
|
(add-input! listener))))
|
||||||
run-fn! (fn [k & args]
|
run-fn! (fn [k & args]
|
||||||
(doseq [screen screens]
|
(doseq [screen screens]
|
||||||
(apply (get screen k) args)))]
|
(apply (get screen k) args)))]
|
||||||
|
|||||||
@@ -90,15 +90,16 @@
|
|||||||
|
|
||||||
; listeners
|
; listeners
|
||||||
|
|
||||||
(defn listen!
|
(defn ui-listen!
|
||||||
[{:keys [renderer ui-listeners] :as screen} entities]
|
[{:keys [renderer ui-listeners] :as screen} entities]
|
||||||
(assert (isa? (type renderer) Stage))
|
(assert (isa? (type renderer) Stage))
|
||||||
(add-input! renderer)
|
(add-input! renderer)
|
||||||
(stage! screen :clear)
|
(stage! screen :clear)
|
||||||
(doseq [{:keys [object]} entities]
|
(doseq [{:keys [object]} entities]
|
||||||
(stage! screen :add-actor object)
|
(when (isa? (type object) Actor)
|
||||||
(doseq [listener ui-listeners]
|
(stage! screen :add-actor object)
|
||||||
(.addListener ^Actor object listener)))
|
(doseq [listener ui-listeners]
|
||||||
|
(.addListener ^Actor object listener))))
|
||||||
entities)
|
entities)
|
||||||
|
|
||||||
(defn- ui-gesture-listener
|
(defn- ui-gesture-listener
|
||||||
|
|||||||
Reference in New Issue
Block a user