Set entities by returning them at the end of the methods
This commit is contained in:
@@ -23,25 +23,30 @@
|
|||||||
[{:keys [on-show on-render on-hide on-pause on-resize on-resume]
|
[{:keys [on-show on-render on-hide on-pause on-resize on-resume]
|
||||||
:or {on-show dummy on-render dummy on-hide dummy
|
:or {on-show dummy on-render dummy on-hide dummy
|
||||||
on-pause dummy on-resize dummy on-resume dummy}}]
|
on-pause dummy on-resize dummy on-resume dummy}}]
|
||||||
(let [screen (atom {})]
|
(let [screen (atom {})
|
||||||
|
entities (atom '())
|
||||||
|
execute (fn [func]
|
||||||
|
(some->> (func @screen @entities)
|
||||||
|
list
|
||||||
|
flatten
|
||||||
|
(reset! entities)))]
|
||||||
(proxy [Screen] []
|
(proxy [Screen] []
|
||||||
(show []
|
(show []
|
||||||
(on-show (swap! screen assoc
|
(swap! screen assoc
|
||||||
:total-time 0
|
:total-time 0
|
||||||
:delta-time 0
|
:delta-time 0
|
||||||
:set-entities #(swap! screen assoc :entities %)
|
:create-renderer #(swap! screen assoc :renderer (renderer %))
|
||||||
:create-renderer #(swap! screen assoc
|
:create-camera #(swap! screen assoc :camera (camera %)))
|
||||||
:renderer (renderer %))
|
(execute on-show))
|
||||||
:create-camera #(swap! screen assoc
|
|
||||||
:camera (camera %)))))
|
|
||||||
(render [delta-time]
|
(render [delta-time]
|
||||||
(on-render (swap! screen assoc
|
(swap! screen assoc
|
||||||
:total-time (+ (:total-time @screen) delta-time)
|
:total-time (+ (:total-time @screen) delta-time)
|
||||||
:delta-time delta-time)))
|
:delta-time delta-time)
|
||||||
(hide [] (on-hide @screen))
|
(execute on-render))
|
||||||
(pause [] (on-pause @screen))
|
(hide [] (execute on-hide))
|
||||||
(resize [w h] (on-resize @screen))
|
(pause [] (execute on-pause))
|
||||||
(resume [] (on-resume @screen)))))
|
(resize [w h] (execute on-resize))
|
||||||
|
(resume [] (execute on-resume)))))
|
||||||
|
|
||||||
(defmacro defscreen
|
(defmacro defscreen
|
||||||
[n & {:keys [] :as options}]
|
[n & {:keys [] :as options}]
|
||||||
@@ -65,14 +70,6 @@
|
|||||||
[^Game game ^Screen screen]
|
[^Game game ^Screen screen]
|
||||||
(.setScreen game screen))
|
(.setScreen game screen))
|
||||||
|
|
||||||
(defn set-entities!
|
|
||||||
[{:keys [set-entities]} entities]
|
|
||||||
(:entities (set-entities entities)))
|
|
||||||
|
|
||||||
(defn get-entities
|
|
||||||
[{:keys [entities]}]
|
|
||||||
entities)
|
|
||||||
|
|
||||||
(defn create-renderer!
|
(defn create-renderer!
|
||||||
[{:keys [create-renderer]} & {:keys [] :as args}]
|
[{:keys [create-renderer]} & {:keys [] :as args}]
|
||||||
(:renderer (create-renderer args)))
|
(:renderer (create-renderer args)))
|
||||||
|
|||||||
Reference in New Issue
Block a user