a lot of tweaks to make mobile faster.
This commit is contained in:
@@ -209,7 +209,7 @@ void main ()
|
||||
(assoc-in entities [:state :active?] false)))
|
||||
|
||||
(defn open-inventory [screen entities]
|
||||
(screen! inventory-screen :show-screen :items (map (entities :all-items) (get-in entities [:state :inventory])))
|
||||
(screen! inventory-screen :show-screen { :items (map (entities :all-items) (get-in entities [:state :inventory]))})
|
||||
(assoc-in entities [:state :active?] false))
|
||||
|
||||
|
||||
@@ -247,10 +247,10 @@ void main ()
|
||||
(or (:id interacting-entity) (:id interaction) nil))
|
||||
(get-in entities [:cursor :came-from-inventory?])))
|
||||
((or (when (and interacting-entity (not (:cursor interaction)))
|
||||
(do (screen! hud :on-start-script)
|
||||
(do (screen! hud :on-start-script {})
|
||||
((:get-script interacting-entity) (get-script-selector entities) [x y])))
|
||||
(when interaction
|
||||
(do (screen! hud :on-start-script)
|
||||
(do (screen! hud :on-start-script {})
|
||||
((:get-script interaction) (or (when (:cursor interaction) :main)
|
||||
(get-script-selector entities))
|
||||
[x y])))
|
||||
@@ -901,19 +901,20 @@ void main ()
|
||||
(if anim-loop?
|
||||
(get-looped-animation-point anim ^double (- total-time anim-start delta-time))
|
||||
(- total-time anim-start delta-time)))]
|
||||
(merge entity (animation->texture (update-in screen [:total-time] #(- % anim-start))
|
||||
anim
|
||||
anim-loop?)
|
||||
{:current-frame-index current-frame-index
|
||||
:previous-frame-index previous-frame-index
|
||||
:origin-x (or (get-in entity [:anim-origins anim 0])
|
||||
(:base-origin-x entity)
|
||||
(:origin-x entity))
|
||||
:origin-y (or (get-in entity [:anim-origins anim 1])
|
||||
(:base-origin-y entity)
|
||||
(:origin-y entity))}
|
||||
(or (get-in entity [:anim-merges anim])
|
||||
(get-in entity [:anim-merges :default])))))
|
||||
(if (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity))
|
||||
entity
|
||||
(merge (assoc entity
|
||||
:object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?)
|
||||
:current-frame-index current-frame-index
|
||||
:previous-frame-index previous-frame-index
|
||||
:origin-x (or (get-in entity [:anim-origins anim 0])
|
||||
(:base-origin-x entity)
|
||||
(:origin-x entity))
|
||||
:origin-y (or (get-in entity [:anim-origins anim 1])
|
||||
(:base-origin-y entity)
|
||||
(:origin-y entity)))
|
||||
(or (get-in entity [:anim-merges anim])
|
||||
(get-in entity [:anim-merges :default]))))))
|
||||
|
||||
|
||||
(defn get-layers [entities]
|
||||
@@ -951,9 +952,12 @@ void main ()
|
||||
:object nil}))
|
||||
entities))
|
||||
|
||||
(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e}]
|
||||
(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e :or {anim-sound-frames {}}}]
|
||||
|
||||
|
||||
|
||||
(if (and (not= previous-frame-index current-frame-index)
|
||||
((set (keys anim-sound-frames)) anim))
|
||||
(anim-sound-frames anim))
|
||||
(if-let [[snd vol-scale pitch] (get-in anim-sound-frames [anim current-frame-index])]
|
||||
(let [snd (if (fn? snd)
|
||||
(snd entities)
|
||||
@@ -1051,7 +1055,7 @@ void main ()
|
||||
(assoc e :y (+ (:y e) (:offset-y e)))
|
||||
e)))
|
||||
|
||||
(defn mouse-moved [{:keys [input-x input-y viewport] :as screen} [entities]]
|
||||
(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 add-georgia-to-all-rooms [screen rooms]
|
||||
@@ -1083,7 +1087,7 @@ void main ()
|
||||
|
||||
(defscreen scene
|
||||
:on-timer
|
||||
(fn [screen [entities]]
|
||||
(fn [screen entities]
|
||||
(when-let [timer-fn (get-in entities [:room :timers (:id screen) 2])]
|
||||
(timer-fn screen entities)))
|
||||
|
||||
@@ -1205,7 +1209,7 @@ void main ()
|
||||
(apply-state screen entities)
|
||||
entities)))))
|
||||
|
||||
:on-resume (fn [screen [{{:keys [current override last active was-active]} :cursor :as entities}]]
|
||||
:on-resume (fn [screen {{:keys [current override last active was-active]} :cursor :as entities}]
|
||||
(let [current (or override (get-selected-inventory-item) :main)
|
||||
image-path (if active "cursor_light.png" "cursor.png")]
|
||||
(graphics! :set-cursor (utils/cursor image-path (or (:cursor current) current))))
|
||||
@@ -1220,7 +1224,7 @@ void main ()
|
||||
nil)
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} [entities]]
|
||||
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} entities]
|
||||
(steam/update)
|
||||
(.apply viewport)
|
||||
(if (get-in entities [:closing? :value])
|
||||
@@ -1230,7 +1234,7 @@ void main ()
|
||||
entities (remove-ended-sounds screen entities)
|
||||
layers (get-layers entities)
|
||||
all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))]
|
||||
(screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity]))
|
||||
(screen! fade-screen :update-fade {:opacity (get-in entities [:fade :opacity])})
|
||||
(doseq [m (vals (get-in entities [:musics]))]
|
||||
(when m
|
||||
(music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value])))))
|
||||
@@ -1249,7 +1253,6 @@ void main ()
|
||||
entities (update-from-script screen entities :bg-actions)
|
||||
entities (update-from-room screen entities)
|
||||
entities (update-from-hotspots screen entities)
|
||||
entities (assoc-in entities [:room :entities :ego :last-frame] (get-in entities [:room :entities :ego :object]))
|
||||
|
||||
entities (update-in entities [:room :entities] (fn [entities]
|
||||
(into entities
|
||||
@@ -1290,8 +1293,8 @@ void main ()
|
||||
|
||||
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))
|
||||
(screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity]))
|
||||
(screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)})
|
||||
(screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])})
|
||||
(when true #_(not (get-in entities [:cam :paused?]))
|
||||
(set! (. camera zoom) (:zoom (:cam entities)))
|
||||
(set! (.. camera position x) (:x (:cam entities) 160.0))
|
||||
@@ -1310,10 +1313,10 @@ void main ()
|
||||
|
||||
entities))))
|
||||
|
||||
:on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]]
|
||||
:on-resize (fn [{:keys [^FitViewport viewport width height]} entities]
|
||||
(.update viewport width height))
|
||||
|
||||
:on-hide (fn [screen [entities]]
|
||||
:on-hide (fn [screen entities]
|
||||
(doseq [snd (->> (get-in entities [:musics])
|
||||
vals
|
||||
(filter identity))]
|
||||
@@ -1326,7 +1329,7 @@ void main ()
|
||||
mouse-moved
|
||||
|
||||
:on-touch-down
|
||||
(fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]]
|
||||
(fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} entities]
|
||||
(when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
|
||||
(.getScreenWidth viewport) (.getScreenHeight viewport)
|
||||
input-x input-y)
|
||||
@@ -1340,7 +1343,7 @@ void main ()
|
||||
interacting-entity (get-interacting-entity entities x y)]
|
||||
(assoc-in entities [:cursor :down-target] (or (:id interacting-entity ) (:id interaction) nil))))))
|
||||
|
||||
:on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]]
|
||||
:on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} entities]
|
||||
|
||||
(when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
|
||||
(.getScreenWidth viewport) (.getScreenHeight viewport)
|
||||
@@ -1348,34 +1351,34 @@ void main ()
|
||||
(if (= (button-code :right)
|
||||
(:button screen))
|
||||
(do
|
||||
(screen! hud :on-return-item))
|
||||
(screen! hud :on-return-item {}))
|
||||
(when (and (get-in entities [:state :active?])
|
||||
(or (not (get-in entities [:state :hud-active?]))
|
||||
(get-in entities [:fg-actions :script-running?]))
|
||||
(= 0.0 (get-in entities [:fade :opacity])))
|
||||
(left-click screen entities)))))
|
||||
|
||||
:on-deactivate (fn [screen [entities]]
|
||||
:on-deactivate (fn [screen entities]
|
||||
(assoc-in entities [:state :active?] false))
|
||||
|
||||
:on-reactivate (fn [{:keys [came-from-inventory?] :as screen} [entities]]
|
||||
:on-reactivate (fn [{:keys [came-from-inventory?] :as screen} entities]
|
||||
(-> entities
|
||||
(assoc-in [:state :active?] true)
|
||||
(assoc-in [:cursor :came-from-inventory?] came-from-inventory?)))
|
||||
|
||||
:on-end-safe (fn [screen [entities]]
|
||||
:on-end-safe (fn [screen entities]
|
||||
((actions/get-script entities
|
||||
(actions/play-animation entities :ego :end-squat)) entities)
|
||||
(-> entities
|
||||
(assoc-in [:state :active?] true)
|
||||
(assoc-in [:cursor :override] nil)))
|
||||
|
||||
:on-open-inventory (fn [screen [entities]]
|
||||
:on-open-inventory (fn [screen entities]
|
||||
(open-inventory screen entities))
|
||||
|
||||
:on-click-inventory (fn [screen [entities]]
|
||||
:on-click-inventory (fn [screen entities]
|
||||
(click-inventory screen entities))
|
||||
:on-save (fn [screen [entities]]
|
||||
:on-save (fn [screen entities]
|
||||
(when-not (get-in entities [:fg-actions :script-running?])
|
||||
(let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.))
|
||||
save-name (str (-> entities :room :name) " - " date)]
|
||||
@@ -1383,9 +1386,9 @@ void main ()
|
||||
(str (.getTime (java.util.Date.)))
|
||||
save-name
|
||||
date)
|
||||
(screen! toast-screen :on-toast :message (str "Saved \"" save-name "\"")))))
|
||||
(screen! toast-screen :on-toast { :message (str "Saved \"" save-name "\"")}))))
|
||||
|
||||
:on-menu (fn [{:keys [viewport] :as screen} [entities]]
|
||||
:on-menu (fn [{:keys [viewport] :as screen} entities]
|
||||
(when-not (or (get-in entities [:tweens :fade-out])
|
||||
(get-in entities [:tweens :fade-in]))
|
||||
|
||||
@@ -1402,10 +1405,10 @@ void main ()
|
||||
(set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))
|
||||
%))))))
|
||||
|
||||
:on-start-script (fn [{:keys [script]} [entities]]
|
||||
:on-start-script (fn [{:keys [script]} entities]
|
||||
(script entities)
|
||||
entities)
|
||||
:hud-active? (fn [{:keys [hud-active?]} [entities]]
|
||||
:hud-active? (fn [{:keys [hud-active?]} entities]
|
||||
(assoc-in entities [:state :hud-active?] hud-active?))) ()
|
||||
|
||||
|
||||
@@ -1428,7 +1431,7 @@ void main ()
|
||||
entities)))
|
||||
|
||||
(defn get-selected-inventory-item []
|
||||
(let [[{{:keys [state state-data]} :inv-fsm}] (-> hud :entities deref)]
|
||||
(let [{{:keys [state state-data]} :inv-fsm} (-> hud :entities deref)]
|
||||
(and (= state :selected)
|
||||
state-data)))
|
||||
|
||||
@@ -1440,7 +1443,7 @@ void main ()
|
||||
{:label (assoc (label "Demo version - DO NOT COPY" (color :white) ) :y 460 :x 5 :baseline 0 :opacity 0.5)}))
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} [entities]]
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities]
|
||||
(.apply viewport)
|
||||
(render! screen [(:label entities)])
|
||||
entities)
|
||||
@@ -1451,7 +1454,7 @@ void main ()
|
||||
|
||||
)
|
||||
(defn hud-interactable? []
|
||||
(let [[scene-entities] (-> scene :entities deref)]
|
||||
(let [scene-entities (-> scene :entities deref)]
|
||||
(and (not (get-in scene-entities [:fg-actions :script-running?]))
|
||||
(get-in scene-entities [:state :active?])
|
||||
(= 0.0 (get-in scene-entities [:fade :opacity])))))
|
||||
@@ -1527,7 +1530,7 @@ void main ()
|
||||
|
||||
(reify ITransition
|
||||
(start-transition [this screen entities]
|
||||
(screen! scene :on-open-inventory)
|
||||
(screen! scene :on-open-inventory {})
|
||||
entities)
|
||||
(transition-done? [this screen entities]
|
||||
true))]))
|
||||
@@ -1750,9 +1753,9 @@ void main ()
|
||||
#_#_:fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)}))
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} [entities]]
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities]
|
||||
(.apply viewport)
|
||||
(let [entities (utils/apply-tweens screen entities (:tweens entities))
|
||||
#_(let [entities (utils/apply-tweens screen entities (:tweens entities))
|
||||
entities (update-in entities [:inventory] animate screen )
|
||||
hud-interactable? (hud-interactable?)
|
||||
entities (if hud-interactable?
|
||||
@@ -1827,7 +1830,7 @@ void main ()
|
||||
|
||||
|
||||
:on-start-script
|
||||
(fn [_ [entities]]
|
||||
(fn [_ entities]
|
||||
(println "here")
|
||||
(-> entities
|
||||
(update-in [:inv-fsm :pending-states] conj [:none nil])
|
||||
@@ -1835,7 +1838,7 @@ void main ()
|
||||
|
||||
|
||||
:on-reactivate
|
||||
(fn [{:keys [script-started? item] :as screen} [entities]]
|
||||
(fn [{:keys [script-started? item] :as screen} entities]
|
||||
(let [selected-item? (and (:value item)
|
||||
(:cursor item))]
|
||||
(if (and (not script-started?) selected-item?)
|
||||
@@ -1843,16 +1846,16 @@ void main ()
|
||||
(transition-hud screen entities :none nil))))
|
||||
|
||||
:on-touch-down
|
||||
(fn [screen [entities]]
|
||||
(fn [screen entities]
|
||||
(let [[x y] (utils/unproject screen)
|
||||
hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
|
||||
hovered-close? (utils/intersects? (:close entities) [x y])
|
||||
hovered-save? (utils/intersects? (:save entities) [x y])]
|
||||
(screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory? hovered-save?))))
|
||||
(screen! scene :hud-active? { :hud-active? (or hovered-close? hovered-inventory? hovered-save?)})))
|
||||
|
||||
#_#_:on-mouse-moved
|
||||
|
||||
(fn [screen [entities]]
|
||||
(fn [screen entities]
|
||||
(let [[x y] (utils/unproject screen)
|
||||
hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
|
||||
hovered-close? (utils/intersects? (:close entities) [x y])
|
||||
@@ -1883,7 +1886,7 @@ void main ()
|
||||
|
||||
|
||||
:on-touch-up
|
||||
(fn [screen [entities]]
|
||||
(fn [screen entities]
|
||||
(if (= (button-code :left) (:button screen))
|
||||
(let [[x y] (utils/unproject screen)]
|
||||
(cond
|
||||
@@ -1897,15 +1900,15 @@ void main ()
|
||||
(update-in entities [:inv-fsm :pending-states] conj [:none (get-in entities [:inv-fsm :state-data])])
|
||||
|
||||
(do
|
||||
(screen! scene :on-deactivate)
|
||||
(screen! scene :on-deactivate {})
|
||||
(update-in entities [:inv-fsm :pending-states] conj [:open nil])))
|
||||
|
||||
(utils/intersects? (:close entities) [x y])
|
||||
(screen! scene :on-menu)
|
||||
(screen! scene :on-menu {})
|
||||
|
||||
(and (not (:already-saved? entities)) (utils/intersects? (:save entities) [x y]) (hud-interactable?))
|
||||
(do
|
||||
(screen! scene :on-save)
|
||||
(screen! scene :on-save {})
|
||||
(assoc entities :already-saved? true))
|
||||
|
||||
:else
|
||||
|
||||
Reference in New Issue
Block a user