From 4a2421f7b43dd6e3d488af289bede6ba033f752d Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Fri, 5 Aug 2016 08:08:41 -0700 Subject: [PATCH] more improvement --- desktop/src-common/advent/screens/scene.clj | 45 ++++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index caa2d6e3..61da0553 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -1058,6 +1058,19 @@ void main () (defn mouse-moved [{:keys [input-x input-y viewport] :as screen} entities] (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]))) +(defn grab-layers [entities] + (update-in entities [:room] + (fn [{:keys [layers current-layers] :as room}] + (cond current-layers + room + + (map? layers) + (assoc room :current-layers (map (partial get-rendered entities) ((get-in entities [:state :time]) layers))) + + :else + (assoc room :current-layers (map (partial get-rendered entities) layers)) + )))) + (defn add-georgia-to-all-rooms [screen rooms] (let [georgia-talk (utils/make-anim "ego/georgia.png" [30 30] 0.15 [0 1 0 1 0 0 1 0 1 2]) georgia-stand (utils/make-anim "ego/georgia.png" [30 30] 0.3 [0 0 0 0 0 0 0 2 0 0 0 0 2]) @@ -1232,7 +1245,14 @@ void main () (let [entities (utils/apply-tweens screen entities (:tweens entities)) entities (update-current-sound-vols! entities) entities (remove-ended-sounds screen entities) - layers (get-layers entities) + get-rendered (partial get-rendered entities) + entities (loop [entities entities + [[k e] & rest] (seq (get-in entities [:room :entities]))] + (if k + (recur (update-in entities [:room :entities k] get-rendered) rest) + entities)) + entities (grab-layers entities) + layers (get-in entities [:room :current-layers]) all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] (screen! fade-screen :update-fade {:opacity (get-in entities [:fade :opacity])}) (doseq [m (vals (get-in entities [:musics]))] @@ -1242,8 +1262,8 @@ void main () (clear!) (doseq [e (sort-by :baseline all-entities)] (if (:parallax e) - (render-parallax screen (get-rendered entities e)) - (render! screen [(get-rendered entities e)])))) + (render-parallax screen e) + (render! screen [e])))) (let [entities (fade-in-first-time-if-necessary screen entities) entities (utils/apply-tweens screen entities (:tweens entities)) entities (update-cursor screen entities) @@ -1289,8 +1309,14 @@ void main () entities) - layers (get-layers entities) - + entities (grab-layers entities) + get-rendered (partial get-rendered entities) + entities (loop [entities entities + [[k e] & rest] (seq (get-in entities [:room :entities]))] + (if k + (recur (update-in entities [:room :entities k] get-rendered) rest) + entities)) + layers (get-in entities [:room :current-layers]) all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] (clear!) (screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)}) @@ -1299,17 +1325,17 @@ void main () (set! (. camera zoom) (:zoom (:cam entities))) (set! (.. camera position x) (:x (:cam entities) 160.0)) (set! (.. camera position y) (:y (:cam entities) 120.0))) - (let [entities (utils/update-override screen entities) + (let [#_#_entities (utils/update-override screen entities) entities (play-key-sounds screen entities) entities (update-current-sound-vols! entities) entities (remove-ended-sounds screen entities)] (doseq [m (vals (get-in entities [:musics]))] (when m (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value]))))) - (doseq [e (sort-by :baseline all-entities)] + (doseq [e (doall (sort-by :baseline all-entities))] (if (:parallax e) - (render-parallax screen (get-rendered entities e)) - (render! screen [(get-rendered entities e)]))) + (render-parallax screen e) + (render! screen [e]))) entities)))) @@ -1470,7 +1496,6 @@ void main () (transition-done? [this screen entities])) (defn accept-state [entities state state-data transitions] - (println "entering state" state) (-> entities (assoc-in [:inv-fsm :state] state) (assoc-in [:inv-fsm :state-data] state-data)