diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj index efa30a7b..f362f9a3 100644 --- a/desktop/src-common/advent/screens/dialogue.clj +++ b/desktop/src-common/advent/screens/dialogue.clj @@ -41,18 +41,18 @@ (defscreen talking-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 1280 960) {}) :on-render - (fn [{:keys [camera ^FitViewport viewport] :as screen} entities] + (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options] (.apply viewport) (render! screen (vals entities)) entities) :on-talk - (fn [{:keys [create-talk target-id color text x y scale scene-viewport id] :as screen} entities] + (fn [screen entities {:keys [create-talk target-id color text x y scale scene-viewport id]}] (let [font (bitmap-font "ego/font.fnt" ) p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) _ (nine-patch! p :set-padding 25 25 5 15) @@ -79,7 +79,7 @@ (assoc entities id talk))) :on-update-camera - (fn [{:keys [scene-viewport scene-camera viewport] :as screen} entities] + (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [scene-viewport scene-camera]}] (reduce-kv (fn [entities id e] (if (:id e) (let [[x y] (scene-world->talk-world scene-viewport [(:source-x e) @@ -93,11 +93,11 @@ entities)) :stop-talk - (fn [{:keys [id] } entities] + (fn [screen entities {:keys [id]}] (dissoc entities (or id :fg-actions))) - :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) (def choice-height 40) @@ -117,7 +117,7 @@ (defscreen choice-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 1280 960) (let [font (bitmap-font "ego/font.fnt" ) tr (bitmap-font! font :get-region) @@ -134,7 +134,7 @@ :x 5 :y 5 :width 1270)}})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} entities] + (fn [{:keys [^FitViewport viewport] :as screen} entities options] (.apply viewport) (when (seq (get-in entities [:state :choices])) (render! screen [(get-in entities [:state :np])]) @@ -142,7 +142,7 @@ entities) :on-present-choices - (fn [{:keys [choices callback]} entities] + (fn [screen entities {:keys [choices callback]}] (let [choice-count (count choices) font (get-in entities [:state :font])] (-> entities @@ -159,8 +159,8 @@ (assoc-in [:state :callback] callback) (assoc-in [:state :np :height] (* choice-height (inc choice-count)))))) - :on-touch-up (fn [screen entities] - (let [[x y] (utils/unproject screen)] + :on-touch-up (fn [screen entities options] + (let [[x y] (utils/unproject screen options)] (when (seq (get-in entities [:state :choices])) (when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))] ((get-in entities [:state :callback]) (:index choice)) @@ -169,8 +169,8 @@ (assoc-in [:state :choices] []) (select-keys [:state])))))) - :on-mouse-moved (fn [screen entities] - (let [[x y] (utils/unproject screen) + :on-mouse-moved (fn [screen entities options] + (let [[x y] (utils/unproject screen options) entities (assoc-in entities [:state :last-pos] [x y]) choice-count (dec (count entities))] (doseq [e (vals entities) @@ -178,17 +178,17 @@ (style-label e (get-in entities [:state :font]) [x y])) entities)) - :on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) (defscreen toast-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 1280 960) {}) :on-render - (fn [{:keys [camera ^FitViewport viewport] :as screen} entities] + (fn [{:keys [camera ^FitViewport viewport] :as screen} entities options] (.apply viewport) (let [entities (utils/apply-tweens screen entities (:tweens entities))] (when (:dialogue entities) @@ -197,7 +197,7 @@ entities)) :on-toast - (fn [{:keys [message] :as screen} entities] + (fn [screen entities {:keys [message]}] (let [font (bitmap-font "ego/font.fnt" ) p (nine-patch {:region (:object (utils/get-texture "talk-bg-2.png")) :left 9 :top 9 :right 9 :bottom 9}) _ (nine-patch! p :set-padding 25 25 5 15) @@ -220,9 +220,9 @@ :finish #(dissoc % :dialogue)))))) :stop-talk - (fn [{:keys [target-id] } entities] + (fn [_ entities {:keys [target-id]}] (dissoc entities :dialogue)) - :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) diff --git a/desktop/src-common/advent/screens/fade.clj b/desktop/src-common/advent/screens/fade.clj index c2f2d9bf..6c0b45db 100644 --- a/desktop/src-common/advent/screens/fade.clj +++ b/desktop/src-common/advent/screens/fade.clj @@ -17,7 +17,7 @@ (defscreen fade-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 320 240) {:fade (assoc (utils/get-texture "black.png") @@ -31,13 +31,13 @@ :on-render - (fn [screen entities] + (fn [screen entities options] (render! screen [(:fade entities)]) entities) - :update-fade (fn [{:keys [opacity]} entities] + :update-fade (fn [_ entities {:keys [opacity]}] (assoc-in entities [:fade :opacity] opacity)) - :on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update ^FitViewport viewport width height))) diff --git a/desktop/src-common/advent/screens/inventory.clj b/desktop/src-common/advent/screens/inventory.clj index 3a91696b..86a51957 100644 --- a/desktop/src-common/advent/screens/inventory.clj +++ b/desktop/src-common/advent/screens/inventory.clj @@ -29,8 +29,8 @@ (assoc-in [:tweens :fade-out] (tween/tween :fade-out screen [:opacity] 1.0 0.0 0.2 :ease tween/ease-out-cubic :finish #(assoc % :shown? false))))) -(defn mouse-down [screen entities] - (let [[x y] (utils/unproject screen) +(defn mouse-down [screen entities options] + (let [[x y] (utils/unproject screen options) selected-entity (first (filter #((:box %) x y) (vals (:items entities))))] (assoc entities :selected-item (:item selected-entity)))) @@ -40,9 +40,9 @@ (< y 80) (> y 880))) -(defn mouse-drag [screen {:keys [selected-item] :as entities}] +(defn mouse-drag [screen {:keys [selected-item] :as entities} options] (when (interactable? entities) - (let [[x y] (utils/unproject screen) + (let [[x y] (utils/unproject screen options) hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))] (cond (and selected-item (mouse-outside-inventory? [x y])) @@ -58,12 +58,12 @@ (assoc entities :hovered-item (:item hovered-entity) :dragged? true))))) -(defn mouse-move [screen entities] - (let [[x y] (utils/unproject screen) +(defn mouse-move [screen entities options] + (let [[x y] (utils/unproject screen options) hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))] (assoc entities :hovered-item (:item hovered-entity)))) -(defn left-click [screen {:keys [selected-item hovered-item dragged?] :as entities}] +(defn left-click [screen {:keys [selected-item hovered-item dragged?] :as entities} options] (let [room-entities (-> @(resolve 'advent.screens.scene/scene) :entities deref)] @@ -86,7 +86,7 @@ (interaction-script room-entities) (close screen entities true false))))) -(defn right-click [screen {:keys [selected-item] :as entities} ] +(defn right-click [screen {:keys [selected-item] :as entities} options] (let [ room-entities (-> @(resolve 'advent.screens.scene/scene) :entities @@ -110,7 +110,7 @@ (defscreen inventory-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 1280 960) (let [hovered-text (assoc (label "Hello" (style :label (utils/get-font "ego/font.fnt") (color :white)) :set-font-scale 0.25) :x 0 :y 850 :width 1280 )] @@ -131,7 +131,7 @@ :hovered-text hovered-text})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} {:keys [shown? tweens] :as entities}] + (fn [{:keys [^FitViewport viewport] :as screen} {:keys [shown? tweens] :as entities} options] (.apply viewport) (let [entities (utils/apply-tweens screen entities tweens) opacity (get-in entities [:opacity]) @@ -155,7 +155,7 @@ (render! screen [(:hovered-text entities)])) entities)) - :show-screen (fn [{items :items :as screen} entities] + :show-screen (fn [screen entities {:keys [items]}] (log/info "showing inventory") (when-not (:shown? entities) (-> entities @@ -187,11 +187,11 @@ :on-touch-dragged mouse-drag :on-touch-down mouse-down - :on-touch-up (fn [screen entities] + :on-touch-up (fn [screen entities options] (when (interactable? entities) - (if (= (button-code :left) (:button screen)) - (left-click screen entities) - (right-click screen entities)))) + (if (= (button-code :left) (:button options)) + (left-click screen entities options) + (right-click screen entities options)))) - :on-resize (fn [{:keys [width height ^FitViewport viewport] :as screen} entities] + :on-resize (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [width height]}] (.update viewport width height true))) diff --git a/desktop/src-common/advent/screens/safe.clj b/desktop/src-common/advent/screens/safe.clj index 9cfcdcfb..c3abed1a 100644 --- a/desktop/src-common/advent/screens/safe.clj +++ b/desktop/src-common/advent/screens/safe.clj @@ -41,7 +41,7 @@ (defscreen safe-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 320 240) (let [inputed-key (utils/get-texture "inside-house/inputed-key.png")] @@ -60,14 +60,14 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} entities] + (fn [{:keys [^FitViewport viewport] :as screen} entities options] (.apply viewport) (when (:shown? entities) (render! screen [(:fade entities) (:safe entities)]) (render! screen (take (count (:button-choices entities)) (:entered-keys entities)))) entities) - :show-screen (fn [{:keys [success failure]} entities] + :show-screen (fn [_ entities {:keys [success failure]}] (sound! (utils/load-sound "inside-house/open-safe.ogg") :play (utils/current-sound-volume 0.3)) (assoc entities :shown? true @@ -75,12 +75,12 @@ :success success :failure failure)) - :on-mouse-moved (fn [screen entities] + :on-mouse-moved (fn [screen entities options] entities) - :on-touch-up (fn [screen entities] + :on-touch-up (fn [screen entities options] (when (:shown? entities) - (let [[x y] (utils/unproject screen)] + (let [[x y] (utils/unproject screen options)] (if-let [button (get-button [x y])] (do (sound! (:sound button) :play (utils/current-sound-volume 0.3)) (let [new-state (update-in entities [:button-choices] #(conj % (:id button)))] @@ -107,6 +107,6 @@ (sound! (utils/load-sound "inside-house/close-safe.ogg") :play (utils/current-sound-volume 0.3)) (close entities))))))) - :on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]}] (.update viewport width height))) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index dffac1d2..1021409f 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -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 diff --git a/desktop/src-common/advent/screens/splash.clj b/desktop/src-common/advent/screens/splash.clj index efd88d65..fe698d03 100644 --- a/desktop/src-common/advent/screens/splash.clj +++ b/desktop/src-common/advent/screens/splash.clj @@ -94,7 +94,7 @@ (defscreen splash-screen :on-show - (fn [screen entities] + (fn [screen entities options] (println screen) (utils/setup-viewport screen 1280 960) (log/info "Starting splash screen.") @@ -125,7 +125,7 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} entities] + (fn [{:keys [^FitViewport viewport] :as screen} entities options] (steam/update) (.apply viewport) (clear!) @@ -141,17 +141,17 @@ :show-screen (fn [entities] entities) - :on-touch-up (fn [screen entities] + :on-touch-up (fn [screen entities options] (if (get-in entities [:current-step :can-skip]) (assoc entities :current-step nil :queued-skip? false) (assoc entities :queued-skip? true))) :on-key-up - (fn [screen entities] + (fn [screen entities options] (when (= (key-code :escape) (:key screen)) (utils/toggle-fullscreen!)) nil) - :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] + :on-resize (fn [{:keys [^FitViewport viewport]} entities {:keys [width height]} ] (.update viewport width height false) nil)) diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index 027df528..4da96b95 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -337,7 +337,7 @@ (defscreen title-screen :on-show - (fn [screen entities] + (fn [screen entities options] (utils/setup-viewport screen 1280 960) (log/info "Starting title screen.") @@ -412,7 +412,7 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} entities] + (fn [{:keys [^FitViewport viewport] :as screen} entities options] (steam/update) (.apply viewport) (clear!) @@ -433,14 +433,14 @@ :show-screen (fn [entities] entities) :on-key-up - (fn [screen entities] + (fn [screen entities options] (when (= (key-code :escape) (:key screen)) (utils/toggle-fullscreen!)) nil) :on-ui-changed - (fn [{:keys [^Actor actor] :as screen} entities] + (fn [screen entities {:keys [^Actor actor] :as options}] (when-not (get-in entities [:tweens :fade-out]) (let [e (-> actor .getUserObject) actor-key (:key e)] @@ -550,6 +550,6 @@ :else entities)))) - :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] + :on-resize (fn [{:keys [^FitViewport viewport] :as screen} entities {:keys [width height]}] (.update viewport width height false) nil)) diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index dceff039..054bdee1 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -337,9 +337,9 @@ [cam viewport stage])) (defn unproject - ([screen] - (unproject screen [(:input-x screen) (:input-y screen)]) ) - ([screen [x y]] + ([screen options] + (unproject screen options [(:input-x options) (:input-y options)]) ) + ([screen options [x y]] (let [pj (.unproject ^FitViewport (:viewport screen) (vector-2 x y)) x (.x pj) y (.y pj)] @@ -362,9 +362,9 @@ (and is-script-running (not (#{:end :none-but-arrow} (or (get-in entities [:fg-actions :last-skip-type]) :end)))))) -(defn update-override [{:keys [^FitViewport viewport] :as screen} entities] +(defn update-override [{:keys [^FitViewport viewport] :as screen} entities options] (let [raw-pos (get-in entities [:cursor :last-pos]) - last-pos (unproject screen raw-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)