probably bugs, but faster.
This commit is contained in:
@@ -229,8 +229,8 @@ void main ()
|
||||
interactable-entities)))]
|
||||
interacting-entity))
|
||||
|
||||
(defn left-click [screen entities]
|
||||
(let [[x y] (utils/unproject screen)
|
||||
(defn left-click [screen entities options]
|
||||
(let [[x y] (utils/unproject screen options)
|
||||
_ (log/info (str "clicked " x y))
|
||||
interaction (get-interaction entities x y)
|
||||
interacting-entity (get-interacting-entity entities x y)
|
||||
@@ -1055,8 +1055,8 @@ void main ()
|
||||
(assoc e :y (+ (:y e) (:offset-y e)))
|
||||
e)))
|
||||
|
||||
(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 mouse-moved [screen entities {:keys [input-x input-y] :as options}]
|
||||
(utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]) options))
|
||||
|
||||
(defn grab-layers [entities]
|
||||
(update-in entities [:room]
|
||||
@@ -1100,12 +1100,12 @@ void main ()
|
||||
|
||||
(defscreen scene
|
||||
:on-timer
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(when-let [timer-fn (get-in entities [:room :timers (:id screen) 2])]
|
||||
(timer-fn screen entities)))
|
||||
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(log/info "Initializing scene.")
|
||||
|
||||
(let [screen (assoc screen :total-time 0)]
|
||||
@@ -1222,7 +1222,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} options]
|
||||
(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))))
|
||||
@@ -1231,13 +1231,13 @@ void main ()
|
||||
|
||||
|
||||
:on-key-up
|
||||
(fn [screen entities]
|
||||
(when (= (key-code :escape) (:key screen))
|
||||
(fn [screen entities options]
|
||||
(when (= (key-code :escape) (:key options))
|
||||
(utils/toggle-fullscreen!))
|
||||
nil)
|
||||
|
||||
:on-render
|
||||
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} entities]
|
||||
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} entities options]
|
||||
(steam/update)
|
||||
(.apply viewport)
|
||||
(if (get-in entities [:closing? :value])
|
||||
@@ -1321,7 +1321,7 @@ 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 options)
|
||||
entities (play-key-sounds screen entities)
|
||||
entities (update-current-sound-vols! entities)
|
||||
entities (remove-ended-sounds screen entities)]
|
||||
@@ -1335,10 +1335,10 @@ void main ()
|
||||
|
||||
entities))))
|
||||
|
||||
:on-resize (fn [{:keys [^FitViewport viewport width height]} entities]
|
||||
(.update viewport width height))
|
||||
:on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
|
||||
(.update viewport width height true))
|
||||
|
||||
:on-hide (fn [screen entities]
|
||||
:on-hide (fn [screen entities options]
|
||||
(doseq [snd (->> (get-in entities [:musics])
|
||||
vals
|
||||
(filter identity))]
|
||||
@@ -1351,56 +1351,57 @@ void main ()
|
||||
mouse-moved
|
||||
|
||||
:on-touch-down
|
||||
(fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} entities]
|
||||
(fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [input-x input-y] :as options}]
|
||||
(when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
|
||||
(.getScreenWidth viewport) (.getScreenHeight viewport)
|
||||
input-x input-y)
|
||||
(when (and (= (button-code :left)
|
||||
(:button screen))
|
||||
(:button options))
|
||||
(get-in entities [:state :active?])
|
||||
(not (get-in entities [:state :hud-active?]))
|
||||
(= 0.0 (get-in entities [:fade :opacity])))
|
||||
(let [[x y] (utils/unproject screen)
|
||||
(let [[x y] (utils/unproject screen options)
|
||||
interaction (get-interaction entities x y)
|
||||
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 [^FitViewport viewport] :as screen} entities {:keys [input-x input-y] :as options}]
|
||||
|
||||
(when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport)
|
||||
(.getScreenWidth viewport) (.getScreenHeight viewport)
|
||||
input-x input-y)
|
||||
(if (= (button-code :right)
|
||||
(:button screen))
|
||||
(:button options))
|
||||
(do
|
||||
(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)))))
|
||||
(left-click screen entities options)))))
|
||||
|
||||
:on-deactivate (fn [screen entities]
|
||||
:on-deactivate (fn [screen entities options]
|
||||
(assoc-in entities [:state :active?] false))
|
||||
|
||||
:on-reactivate (fn [{:keys [came-from-inventory?] :as screen} entities]
|
||||
:on-reactivate (fn [screen entities {:keys [came-from-inventory?]}]
|
||||
(-> 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 options]
|
||||
((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 options]
|
||||
(open-inventory screen entities))
|
||||
|
||||
:on-click-inventory (fn [screen entities]
|
||||
:on-click-inventory (fn [screen entities options]
|
||||
(click-inventory screen entities))
|
||||
:on-save (fn [screen entities]
|
||||
|
||||
:on-save (fn [screen entities options]
|
||||
(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)]
|
||||
@@ -1410,7 +1411,7 @@ void main ()
|
||||
date)
|
||||
(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 options]
|
||||
(when-not (or (get-in entities [:tweens :fade-out])
|
||||
(get-in entities [:tweens :fade-in]))
|
||||
|
||||
@@ -1427,10 +1428,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 options]
|
||||
(script entities)
|
||||
entities)
|
||||
:hud-active? (fn [{:keys [hud-active?]} entities]
|
||||
:hud-active? (fn [{:keys [hud-active?]} entities options]
|
||||
(assoc-in entities [:state :hud-active?] hud-active?))) ()
|
||||
|
||||
|
||||
@@ -1459,19 +1460,19 @@ void main ()
|
||||
|
||||
(defscreen demo
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(let [screen (assoc screen :total-time 0)]
|
||||
(utils/setup-viewport screen 640 480)
|
||||
{: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 options]
|
||||
(.apply viewport)
|
||||
(render! screen [(:label entities)])
|
||||
entities)
|
||||
|
||||
:on-resize
|
||||
(fn [{:keys [^FitViewport viewport width height]} entities]
|
||||
(fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
|
||||
(.update viewport width height true))
|
||||
|
||||
)
|
||||
@@ -1736,7 +1737,7 @@ void main ()
|
||||
|
||||
(defscreen hud
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(fn [screen entities options]
|
||||
(let [screen (assoc screen :total-time 0)]
|
||||
(utils/setup-viewport screen 320 240)
|
||||
|
||||
@@ -1774,7 +1775,7 @@ 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 options]
|
||||
(.apply viewport)
|
||||
#_(let [entities (utils/apply-tweens screen entities (:tweens entities))
|
||||
entities (update-in entities [:inventory] animate screen )
|
||||
@@ -1816,11 +1817,11 @@ void main ()
|
||||
entities))
|
||||
|
||||
:on-resize
|
||||
(fn [{:keys [^FitViewport viewport width height]} entities]
|
||||
(fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}]
|
||||
(.update viewport width height true))
|
||||
|
||||
:on-give-item
|
||||
(fn [{:keys [item] :as screen} [ entities]]
|
||||
(fn [screen entities {:keys [item]}]
|
||||
(doto
|
||||
(-> entities
|
||||
(update-in [:inv-fsm :pending-states] conj [:acquire item])
|
||||
@@ -1831,7 +1832,7 @@ void main ()
|
||||
(#(println (get-in % [:inv-fsm :pending-states])))))
|
||||
|
||||
:on-remove-item
|
||||
(fn [{:keys [item] :as screen} [ entities]]
|
||||
(fn [screen entities {:keys [item]}]
|
||||
(-> entities
|
||||
(update-in [:inv-fsm :pending-states] conj [:remove item])
|
||||
(update-in [:inv-fsm] (fn [{:keys [state state-data] :as fsm}]
|
||||
@@ -1844,7 +1845,7 @@ void main ()
|
||||
(update-in fsm [:pending-states] conj [:none state-data]))))))
|
||||
|
||||
:on-return-item
|
||||
(fn [screen [ entities]]
|
||||
(fn [screen entities options]
|
||||
(if (hud-interactable?)
|
||||
(-> entities
|
||||
(update-in [:inv-fsm :pending-states] conj [:none (get-in entities [:inv-fsm :state-data])]))))
|
||||
@@ -1859,7 +1860,7 @@ void main ()
|
||||
|
||||
|
||||
:on-reactivate
|
||||
(fn [{:keys [script-started? item] :as screen} entities]
|
||||
(fn [screen entities {:keys [script-started? item]}]
|
||||
(let [selected-item? (and (:value item)
|
||||
(:cursor item))]
|
||||
(if (and (not script-started?) selected-item?)
|
||||
@@ -1867,8 +1868,8 @@ void main ()
|
||||
(transition-hud screen entities :none nil))))
|
||||
|
||||
:on-touch-down
|
||||
(fn [screen entities]
|
||||
(let [[x y] (utils/unproject screen)
|
||||
(fn [screen entities options]
|
||||
(let [[x y] (utils/unproject screen options)
|
||||
hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
|
||||
hovered-close? (utils/intersects? (:close entities) [x y])
|
||||
hovered-save? (utils/intersects? (:save entities) [x y])]
|
||||
@@ -1876,8 +1877,8 @@ void main ()
|
||||
|
||||
#_#_:on-mouse-moved
|
||||
|
||||
(fn [screen entities]
|
||||
(let [[x y] (utils/unproject screen)
|
||||
(fn [screen entities options]
|
||||
(let [[x y] (utils/unproject screen options)
|
||||
hovered-inventory? ((:mouse-in? (:inventory entities)) x y)
|
||||
hovered-close? (utils/intersects? (:close entities) [x y])
|
||||
hovered-save? (utils/intersects? (:save entities) [x y])]
|
||||
@@ -1907,9 +1908,9 @@ void main ()
|
||||
|
||||
|
||||
:on-touch-up
|
||||
(fn [screen entities]
|
||||
(if (= (button-code :left) (:button screen))
|
||||
(let [[x y] (utils/unproject screen)]
|
||||
(fn [screen entities options]
|
||||
(if (= (button-code :left) (:button options))
|
||||
(let [[x y] (utils/unproject screen options)]
|
||||
(cond
|
||||
(not (hud-interactable?))
|
||||
nil
|
||||
|
||||
Reference in New Issue
Block a user