perf improvements
This commit is contained in:
@@ -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#))))))))
|
||||
|
||||
Reference in New Issue
Block a user