diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index a2eb59b1..636f7a03 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -677,7 +677,8 @@ void main() (= active was-active)) (let [image-path (if active "cursor_light.png" "cursor.png")] (input! :set-cursor-image (utils/cursor image-path (or (:cursor new-current) new-current)) 0 0))) - (assoc-in entities [:cursor :last] new-current)) + (update-in entities [:cursor ] assoc :last new-current + :was-active active)) entities)) @@ -824,6 +825,14 @@ void main() :else [x1 x2])) +(defn mouse-moved [{:keys [input-x input-y viewport] :as screen} [entities]] + (if (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) + (.getScreenWidth viewport) (.getScreenHeight viewport) + input-x input-y) + + (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y])) + (assoc-in entities [:cursor :override] nil))) + (defscreen scene :on-timer (fn [screen [entities]] @@ -1012,14 +1021,11 @@ void main() (utils/stop-sound snd))) :on-mouse-moved - (fn [{:keys [input-x input-y viewport] :as screen} [entities]] - (if (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) - (.getScreenWidth viewport) (.getScreenHeight viewport) - input-x input-y) - - (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y])) - (assoc-in entities [:cursor :override] nil))) - + mouse-moved + + :on-touch-dragged + mouse-moved + :on-touch-up (fn [{:keys [input-x input-y viewport] :as screen} [entities]] (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport) diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index 25391065..a1e3825f 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -246,6 +246,7 @@ (defn update-override [screen entities] (let [last-pos (unproject screen (get-in entities [:cursor :last-pos])) mouse-override (find-override entities last-pos)] + (println last-pos) (cond (not (get-in entities [:state :active?])) entities @@ -253,25 +254,21 @@ (is-unstoppable-script-running screen entities) (-> entities (assoc-in [:cursor :override] :hourglass) - (assoc-in [:cursor :was-active] (get-in entities [:cursor :active])) (assoc-in [:cursor :active] false)) (get-in entities [:state :hud-active?]) (-> entities (assoc-in [:cursor :override] nil) - (assoc-in [:cursor :was-active] (get-in entities [:cursor :active])) (assoc-in [:cursor :active] false)) mouse-override (-> entities (assoc-in [:cursor :override] (or (:cursor mouse-override) (when (#{:main :active-main} (get-in entities [:cursor :last])) :active-main))) - (assoc-in [:cursor :was-active] (get-in entities [:cursor :active])) (assoc-in [:cursor :active] true)) :else (-> entities (assoc-in [:cursor :override] nil) - (assoc-in [:cursor :was-active] (get-in entities [:cursor :active])) (assoc-in [:cursor :active] false))))) (def default-night-merge {:r 0.08 :g 0.1 :b 0.36 :multiply-amount 1.0 :hue-amount 1.0})