diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 636f7a03..1e9d1d36 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -826,12 +826,7 @@ void main() [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))) + (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]))) (defscreen scene :on-timer diff --git a/desktop/src-common/advent/utils.clj b/desktop/src-common/advent/utils.clj index a1e3825f..740a9aa3 100644 --- a/desktop/src-common/advent/utils.clj +++ b/desktop/src-common/advent/utils.clj @@ -243,11 +243,18 @@ (and is-script-running (= :none (get-in entities [:actions :last-skip-type]))))) -(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) +(defn update-override [{:keys [viewport] :as screen} entities] + (let [raw-pos (get-in entities [:cursor :last-pos]) + last-pos (unproject screen 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)))] (cond + out-of-bounds + (update-in entities [:cursor] assoc :override nil :active false ) + + (not (get-in entities [:state :active?])) entities