diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index c921a76c..4b3b8c6a 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -580,7 +580,8 @@ (if (= (button-code :right) (:button screen)) (assoc-in entities [:cursor :current] :main) - (when (get-in entities [:state :active?]) + (when (and (get-in entities [:state :active?]) + (not (get-in entities [:state :hud-active?]))) (left-click screen entities))))) :on-deactivate (fn [screen [entities]] @@ -608,7 +609,9 @@ :on-start-script (fn [{:keys [script]} [entities]] (script entities) - entities)) + entities) + :hud-active? (fn [{:keys [hud-active?]} [entities]] + (assoc-in entities [:state :hud-active?] hud-active?))) (defscreen hud :on-show @@ -631,6 +634,12 @@ (fn [screen entities] (.update (:viewport screen) (:width screen) (:height screen) true)) + :on-mouse-moved + (fn [screen [entities]] + (let [[x y] (utils/unproject screen)] + (screen! scene :hud-active? :hud-active? (or ((:mouse-in? (:inventory entities)) x y) + (utils/intersects? (:close entities) [x y]))))) + :on-touch-up (fn [screen [entities]]