Set entities by returning them at the end of the methods

This commit is contained in:
oakes
2014-01-01 16:35:17 -05:00
parent 9ff18b682d
commit 7066311f76

View File

@@ -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)))