can pan around only when nothing going on, can pan while zooming and stuff.

This commit is contained in:
Bryce Covert
2016-12-07 18:35:06 -08:00
parent 7c2a949cde
commit a817e55122
2 changed files with 38 additions and 27 deletions

View File

@@ -190,6 +190,7 @@
)))))) ))))))
:on-touch-up (fn [screen entities options] :on-touch-up (fn [screen entities options]
(println "touched up!")
(let [[x y] (utils/unproject screen options)] (let [[x y] (utils/unproject screen options)]
(when (seq (get-in entities [:state :choices])) (when (seq (get-in entities [:state :choices]))
(when-let [choice (first (filter #(utils/intersects? % [x y]) (get-in entities [:state :labels])))] (when-let [choice (first (filter #(utils/intersects? % [x y]) (get-in entities [:state :labels])))]
@@ -286,7 +287,6 @@
:on-hover-start :on-hover-start
(fn [screen {:keys [all-icons] :as entities} {:keys [hover-text x y scene-viewport cursor ]}] (fn [screen {:keys [all-icons] :as entities} {:keys [hover-text x y scene-viewport cursor ]}]
(println cursor hover-text)
(let [x (if utils/mobile? x (+ 8 x)) (let [x (if utils/mobile? x (+ 8 x))
[scene-x scene-y] (scene-world->talk-world scene-viewport [x y]) [scene-x scene-y] (scene-world->talk-world scene-viewport [x y])
depressed? (< 0.5 (- (or (:total-time screen) 0) (int (or (:total-time screen) 0)))) depressed? (< 0.5 (- (or (:total-time screen) 0) (int (or (:total-time screen) 0))))

View File

@@ -1169,6 +1169,8 @@ void main ()
rooms rooms
(keys rooms)))) (keys rooms))))
(defn remove-cam-tweens [entities]
(update-in entities [:tweens] dissoc :cam-x :cam-y :cam-zoom))
(defscreen scene (defscreen scene
@@ -1316,41 +1318,50 @@ void main ()
:on-pan :on-pan
(fn [screen entities {:keys [input-x input-y delta-x delta-y]}] (fn [screen entities {:keys [input-x input-y delta-x delta-y]}]
(let [ideal-x (+ (get-in entities [:cam :x]) (- (/ delta-x 4))) (when (get-in entities [:state :active?])
ideal-y (+ (get-in entities [:cam :y]) (/ delta-y 4))] (let [ideal-x (+ (get-in entities [:cam :x]) (- (/ delta-x 4)))
(-> entities ideal-y (+ (get-in entities [:cam :y]) (/ delta-y 4))]
(assoc-in [:cursor :last-pos] [0 0]) (-> entities
(assoc-in [:cam :ideal-x] ideal-x) (remove-cam-tweens)
(assoc-in [:cam :ideal-y] ideal-y) (assoc-in [:cursor :last-pos] [0 0])
(assoc-in [:cam :x] (utils/bound-to-camera ideal-x 320 (get-in entities [:cam :zoom])) ) (assoc-in [:cam :ideal-x] ideal-x)
(assoc-in [:cam :y] (utils/bound-to-camera ideal-y 240 (get-in entities [:cam :zoom])) )))) (assoc-in [:cam :ideal-y] ideal-y)
(assoc-in [:cam :x] (utils/bound-to-camera ideal-x 320 (get-in entities [:cam :zoom])) )
(assoc-in [:cam :y] (utils/bound-to-camera ideal-y 240 (get-in entities [:cam :zoom])) )))))
:pinch-stop :pinch-stop
(fn [screen entities options] (fn [screen entities options]
(update-in entities [:cam] dissoc :start-zoom)) (when (get-in entities [:state :active?])
(-> entities
(remove-cam-tweens)
(update-in [:cam] dissoc :start-zoom))))
:on-pinch :on-pinch
(fn [screen entities {:keys [initial-pointer-1 initial-pointer-2]}] (fn [screen entities {:keys [initial-pointer-1 initial-pointer-2]}]
(let [[pointer-1-x pointer-1-y] (utils/unproject screen nil [(.x initial-pointer-1) (.y initial-pointer-1)]) (when (get-in entities [:state :active?])
[pointer-2-x pointer-2-y] (utils/unproject screen nil [(.x initial-pointer-2) (.y initial-pointer-2)])] (let [[pointer-1-x pointer-1-y] (utils/unproject screen nil [(.x initial-pointer-1) (.y initial-pointer-1)])
(-> entities [pointer-2-x pointer-2-y] (utils/unproject screen nil [(.x initial-pointer-2) (.y initial-pointer-2)])]
(assoc-in [:cursor :last-pos] [0 0]) (-> entities
(assoc-in [:cam :ideal-x] (* 0.5 (+ pointer-1-x pointer-2-x))) (remove-cam-tweens)
(assoc-in [:cam :ideal-y] (* 0.5 (+ pointer-1-y pointer-2-y)))))) (assoc-in [:cursor :last-pos] [0 0])
(assoc-in [:cam :ideal-x] (* 0.5 (+ pointer-1-x pointer-2-x)))
(assoc-in [:cam :ideal-y] (* 0.5 (+ pointer-1-y pointer-2-y)))))))
:on-zoom :on-zoom
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities {:keys [initial-distance distance]}] (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities {:keys [initial-distance distance]}]
(let [start-zoom (get-in entities [:cam :start-zoom]) (when (get-in entities [:state :active?])
zoom (get-in entities [:cam :zoom]) (let [start-zoom (get-in entities [:cam :start-zoom])
entities (as-> entities entities zoom (get-in entities [:cam :zoom])
(if (not start-zoom) entities (as-> entities entities
(assoc-in entities [:cam :start-zoom] zoom) (if (not start-zoom)
entities) (assoc-in entities [:cam :start-zoom] zoom)
(assoc-in entities [:cam :zoom] (max utils/max-zoom (min utils/min-zoom (* (or start-zoom zoom) (/ initial-distance distance))))) entities)
(assoc-in entities [:cam :x] (utils/bound-to-camera (get-in entities [:cam :ideal-x]) 320 (get-in entities [:cam :zoom])) ) (remove-cam-tweens entities)
(assoc-in entities [:cam :y] (utils/bound-to-camera (get-in entities [:cam :ideal-y]) 240 (get-in entities [:cam :zoom])) ))] (assoc-in entities [:cam :zoom] (max utils/max-zoom (min utils/min-zoom (* (or start-zoom zoom) (/ initial-distance distance)))))
entities (assoc-in entities [:cam :x] (utils/bound-to-camera (get-in entities [:cam :ideal-x]) 320 (get-in entities [:cam :zoom])) )
)) (assoc-in entities [:cam :y] (utils/bound-to-camera (get-in entities [:cam :ideal-y]) 240 (get-in entities [:cam :zoom])) ))]
entities
)))
#_#_:on-scrolled #_#_:on-scrolled
(fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities options] (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport ^Stage renderer] :as screen} entities options]