override tweaks.

This commit is contained in:
2014-12-15 07:10:06 -08:00
parent 089f9954be
commit 854e3c6b20
3 changed files with 27 additions and 15 deletions

View File

@@ -301,7 +301,7 @@
(begin [this screen entities]
(screen! dialogue/choice-screen :on-present-choices :choices dialogue-choices :callback #(reset! selected-index %))
(screen! @(resolve 'advent.screens.scene/scene) :on-deactivate)
entities)
(assoc-in entities [:cursor :override] nil))
(continue [this screen entities] entities)
@@ -446,7 +446,6 @@
music-changed? (not= old-music new-music)]
(run-action entities
(begin [this screen entities]
(-> entities
(assoc-in [:transition]
(assoc (texture "black.png")
@@ -479,7 +478,8 @@
apply-state (get-in entities [:room :apply-state])
entities (if apply-state
(apply-state entities)
entities)]
entities)
entities (utils/update-override entities)]
(when (not= new-music old-music)
(doseq [[k v] (:musics entities)
:when (and v (not= new-music k))]

View File

@@ -38,17 +38,16 @@
(actions/talk entities :ego "I don't know what to do with that."))))})
(defn find-override [screen entities [x y]]
(first (filter #(and ((:mouse-in? %) entities x y)
(:cursor %))
(get-in entities [:room :interactions]))))
(defn click-inventory [screen entities]
(when (not (get-in entities [:actions :script-running?]))
(if (= (get-in entities [:cursor :current] ) :main)
(do
(screen! inventory-screen :show-screen :items (map (entities :all-items) (get-in entities [:state :inventory])))
(assoc-in entities [:state :active?] false))
(-> entities
(assoc-in [:state :active?] false)
(assoc-in [:cursor :override] nil)))
(assoc-in entities [:cursor :current] :main))))
@@ -278,7 +277,8 @@
:cursor {:id "cursor"
:current :main
:last :main
:override nil}
:override nil
:last-pos [0 0]}
:all-items (assoc items/items :object nil)
:room (as-> (get rooms (:last-room (get-state))) room
(assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))
@@ -334,11 +334,8 @@
:on-mouse-moved
(fn [screen [entities]]
(when (get-in entities [:state :active?])
(let [{:keys [x y]} (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(if-let [mouse-override (find-override screen entities [x y])]
(assoc-in entities [:cursor :override] (:cursor mouse-override))
(assoc-in entities [:cursor :override] nil)))))
(let [pos (input->screen screen {:x (:input-x screen) :y (:input-y screen)})]
(utils/update-override (assoc-in entities [:cursor :last-pos] [(:x pos) (:y pos)]))))
:on-touch-up (fn [screen [entities]]
(if (= (button-code :right)
@@ -351,7 +348,9 @@
(assoc-in entities [:state :active?] false))
:on-reactivate (fn [screen [entities]]
(assoc-in entities [:state :active?] true))
(-> entities
(assoc-in [:state :active?] true)
(assoc-in [:cursor :override] nil)))
:on-chose-item (fn [{:keys [item]} [entities]]
(assoc-in entities [:cursor :current] item))

View File

@@ -98,3 +98,16 @@
v (vector-2 0 0)
a (catmull-rom-spline! (:path entity) :value-at v pos-f)]
(assoc entity :x (vector-2! v :x) :y (vector-2! v :y)))))))
(defn find-override [entities [x y]]
(first (filter #(and ((:mouse-in? %) entities x y)
(:cursor %))
(get-in entities [:room :interactions]))))
(defn update-override [entities]
(if (get-in entities [:state :active?])
(let [last-pos (get-in entities [:cursor :last-pos])]
(if-let [mouse-override (find-override entities last-pos)]
(assoc-in entities [:cursor :override] (:cursor mouse-override))
(assoc-in entities [:cursor :override] nil)))
entities))