Add update! and rename some symbols

This commit is contained in:
oakes
2014-01-06 12:27:54 -05:00
parent 2e2fe8f8d5
commit 16e52427ef

View File

@@ -36,18 +36,22 @@
(remove nil?) (remove nil?)
(reset! entities))) (reset! entities)))
create-renderer-fn! #(swap! screen assoc :renderer (renderer %)) create-renderer-fn! #(swap! screen assoc :renderer (renderer %))
create-camera-fn! #(swap! screen assoc :camera (camera %))] create-camera-fn! #(swap! screen assoc :camera (camera %))
update-fn! #(swap! screen assoc
:renderer (renderer (:renderer %))
:camera (camera (:camera %)))]
{:show (fn [] {:show (fn []
(->> (swap! screen assoc (->> (swap! screen assoc
:total-time 0 :total-time 0
:delta-time 0 :delta-time 0
:create-renderer create-renderer-fn! :create-renderer-fn! create-renderer-fn!
:create-camera create-camera-fn!) :create-camera-fn! create-camera-fn!
:update-fn! update-fn!)
(execute-fn! on-show))) (execute-fn! on-show)))
:render (fn [delta-time] :render (fn [delta-time]
(->> (fn [val] (->> (fn [screen-map]
(assoc val (assoc screen-map
:total-time (+ (:total-time val) delta-time) :total-time (+ (:total-time screen-map) delta-time)
:delta-time delta-time)) :delta-time delta-time))
(swap! screen) (swap! screen)
(execute-fn! on-render))) (execute-fn! on-render)))
@@ -71,14 +75,14 @@
(create [] (on-create this)))) (create [] (on-create this))))
(defmacro defgame (defmacro defgame
[name & {:keys [] :as options}] [n & {:keys [] :as options}]
`(defonce ~name (defgame* ~options))) `(defonce ~n (defgame* ~options)))
(defn set-screen! (defn set-screen!
[^Game game & screens] [^Game game & screens]
(let [run-fn! (fn [key & args] (let [run-fn! (fn [k & args]
(doseq [screen screens] (doseq [screen screens]
(apply (get screen key) args)))] (apply (get screen k) args)))]
(.setScreen game (proxy [Screen] [] (.setScreen game (proxy [Screen] []
(show [] (run-fn! :show)) (show [] (run-fn! :show))
(render [delta-time] (run-fn! :render delta-time)) (render [delta-time] (run-fn! :render delta-time))
@@ -87,10 +91,14 @@
(resize [w h] (run-fn! :resize)) (resize [w h] (run-fn! :resize))
(resume [] (run-fn! :resume)))))) (resume [] (run-fn! :resume))))))
(defn update!
[{:keys [update-fn!]} & {:keys [] :as args}]
(update-fn! args))
(defn create-renderer! (defn create-renderer!
[{:keys [create-renderer]} & {:keys [] :as args}] [{:keys [create-renderer-fn!]} & {:keys [] :as args}]
(:renderer (create-renderer args))) (:renderer (create-renderer-fn! args)))
(defn create-camera! (defn create-camera!
[{:keys [create-camera]} & {:keys [] :as args}] [{:keys [create-camera-fn!]} & {:keys [] :as args}]
(:camera (create-camera args))) (:camera (create-camera-fn! args)))