Fix how listeners are initialized
This commit is contained in:
@@ -72,13 +72,10 @@
|
|||||||
#(normalize (func screen-map old-entities))
|
#(normalize (func screen-map old-entities))
|
||||||
(meta func))
|
(meta func))
|
||||||
(wrapper screen)
|
(wrapper screen)
|
||||||
(reset-changed! entities old-entities)))))]
|
(reset-changed! entities old-entities)))))
|
||||||
; add the input listeners to the screen atom
|
total-time (atom 0)]
|
||||||
(when-not (:input-listeners @screen)
|
|
||||||
(->> (input-listeners options execute-fn!)
|
|
||||||
(swap! screen assoc :input-listeners)))
|
|
||||||
; update screen when either the screen or entities are changed
|
; update screen when either the screen or entities are changed
|
||||||
(add-watch screen :changed (fn [_ _ _ new-screen]
|
(add-watch screen :changed (fn [_ _ old-screen new-screen]
|
||||||
(update-screen! new-screen)))
|
(update-screen! new-screen)))
|
||||||
(add-watch entities :changed (fn [_ _ _ new-entities]
|
(add-watch entities :changed (fn [_ _ _ new-entities]
|
||||||
(update-screen! @screen new-entities)))
|
(update-screen! @screen new-entities)))
|
||||||
@@ -92,14 +89,14 @@
|
|||||||
:update-fn! #(apply swap! screen %1 %2)
|
:update-fn! #(apply swap! screen %1 %2)
|
||||||
:execute-fn! execute-fn!
|
:execute-fn! execute-fn!
|
||||||
:on-timer on-timer
|
:on-timer on-timer
|
||||||
|
:input-listeners (input-listeners options execute-fn!)
|
||||||
:ui-listeners (ui-listeners options execute-fn!))
|
:ui-listeners (ui-listeners options execute-fn!))
|
||||||
(execute-fn! on-show)
|
(execute-fn! on-show)
|
||||||
(when-not (:contact-listener @screen)
|
(->> (contact-listener @screen options execute-fn!)
|
||||||
(->> (contact-listener @screen options execute-fn!)
|
(swap! screen assoc :contact-listener)))
|
||||||
(swap! screen assoc :contact-listener))))
|
|
||||||
:render (fn [d]
|
:render (fn [d]
|
||||||
(swap! screen #(assoc % :total-time (+ (:total-time %) d)))
|
(swap! total-time + d)
|
||||||
(execute-fn! on-render :delta-time d))
|
(execute-fn! on-render :delta-time d :total-time @total-time))
|
||||||
:hide #(execute-fn! on-hide)
|
:hide #(execute-fn! on-hide)
|
||||||
: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)
|
||||||
@@ -450,7 +447,7 @@ via the screen map.
|
|||||||
(doseq [screen screen-objects]
|
(doseq [screen screen-objects]
|
||||||
(apply (get screen k) args)))]
|
(apply (get screen k) args)))]
|
||||||
(.setScreen game-object (reify Screen
|
(.setScreen game-object (reify Screen
|
||||||
(show [this] (add-inputs!) (run-fn! :show))
|
(show [this] (run-fn! :show) (add-inputs!))
|
||||||
(render [this d] (run-fn! :render d))
|
(render [this d] (run-fn! :render d))
|
||||||
(hide [this] (run-fn! :hide))
|
(hide [this] (run-fn! :hide))
|
||||||
(pause [this] (run-fn! :pause))
|
(pause [this] (run-fn! :pause))
|
||||||
|
|||||||
@@ -130,12 +130,12 @@
|
|||||||
|
|
||||||
(defn ^:private add-input!
|
(defn ^:private add-input!
|
||||||
[^InputProcessor p]
|
[^InputProcessor p]
|
||||||
(let [^InputMultiplexer multi (input! :get-input-processor)]
|
(when-let [^InputMultiplexer multi (input! :get-input-processor)]
|
||||||
(.addProcessor multi p)))
|
(.addProcessor multi p)))
|
||||||
|
|
||||||
(defn ^:private remove-input!
|
(defn ^:private remove-input!
|
||||||
[^InputProcessor p]
|
[^InputProcessor p]
|
||||||
(let [^InputMultiplexer multi (input! :get-input-processor)]
|
(when-let [^InputMultiplexer multi (input! :get-input-processor)]
|
||||||
(.removeProcessor multi p)))
|
(.removeProcessor multi p)))
|
||||||
|
|
||||||
(defn sound*
|
(defn sound*
|
||||||
|
|||||||
Reference in New Issue
Block a user