perf improvements

This commit is contained in:
Bryce Covert
2017-05-25 08:06:21 -07:00
parent 645d8d4f2b
commit 731f16f004
4 changed files with 83 additions and 64 deletions

View File

@@ -128,16 +128,16 @@
(defonce selected-save (atom nil))
(defn current-music-volume
([] (current-music-volume 1.0))
([^double factor]
(defn current-music-volume
(^double [] (current-music-volume 1.0))
(^double [^double factor]
(-> (Math/pow (unchecked-multiply (:music-volume @settings) 0.01) 2)
(unchecked-multiply 0.25)
(unchecked-multiply (double factor)))))
(defn current-sound-volume
([] (current-sound-volume 1.0))
([^double factor]
(^double [] (current-sound-volume 1.0))
(^double [^double factor]
(-> (Math/pow (unchecked-multiply (:sound-volume @settings) 0.01) 2)
(unchecked-multiply 0.5)
(unchecked-multiply (double factor)))))
@@ -394,18 +394,18 @@
(first (concat (filter #(and ((:mouse-in? %) entities x y)
(:override %))
(get-in entities [:room :interactions]))
(-> entities :room :interactions))
(filter #(and (:mouse-in? %)
((:mouse-in? %) entities x y)
(not= "ego" (:id %))
(:get-script %))
(vals (get-in entities [:room :entities])))
(vals (-> entities :room :entities)))
(filter #(and ((:mouse-in? %) entities x y)
(:get-script %))
(get-in entities [:room :interactions])))))
(-> entities :room :interactions)))))
(defn hovering-ego [entities [x y]]
(when-let [mouse-in (get-in entities [:room :entities :ego :mouse-in?])]
(when-let [mouse-in (-> entities :room :entities :ego :mouse-in?)]
(mouse-in entities x y)))
(defn remove-interaction [entities id]
@@ -506,14 +506,14 @@
(not (#{:end :none-but-arrow} (or (get-in entities [:fg-actions :last-skip-type]) :end))))))
(defn update-override [{:keys [^FitViewport viewport] :as screen} entities options]
(let [raw-pos (get-in entities [:cursor :last-pos])
(let [raw-pos (-> entities :cursor :last-pos)
last-pos (unproject screen options raw-pos)
mouse-override (find-override entities last-pos)
out-of-bounds (not (contains-point? (.getScreenX viewport) (.getScreenY viewport)
(.getScreenWidth viewport) (.getScreenHeight viewport)
(first raw-pos) (last raw-pos)))
hovering-ego (hovering-ego entities last-pos)
current (get-in entities [:cursor :current])
current (-> entities :cursor :current)
entities (assoc-in entities [:label :text] "")
selected-inventory-item (@(resolve 'advent.screens.scene/get-selected-inventory-item))]
@@ -522,7 +522,7 @@
(update-in entities [:cursor] assoc :override nil :active false )
(not (get-in entities [:state :active?]))
(not (-> entities :state :active?))
(-> entities
(assoc-in [:cursor :override] nil))
@@ -530,7 +530,7 @@
(-> entities
(assoc-in [:cursor :override] :hourglass))
(get-in entities [:state :hud-active?])
(-> entities :state :hud-active?)
(-> entities
(assoc-in [:cursor :override] nil)
(assoc-in [:label :text] ""))
@@ -721,3 +721,20 @@
(defn get-entity [entities id]
((:entities (:room entities)) id))
(defmacro eager-loop [xs n form]
`(let [xs# ~xs]
(if (instance? clojure.lang.Indexed xs#)
(loop [x# 0]
(if (< x# (count xs#))
(let [~n (nth xs# x#)]
~form
(recur (inc x#)))))
(do
(loop [[~n & r#] xs#]
(if (seq r#)
(do ~form
nil)
(do ~form
(recur r#))))))))