fixing a number of issues.
This commit is contained in:
@@ -343,37 +343,53 @@
|
||||
(continue [this screen entities]
|
||||
(when (= (rand-int 5) 2)
|
||||
#_(particle-effect! (:step-particles entities) :start))
|
||||
(let [{from-x :x from-y :y :keys [left right scale-x] :as target-entity} (get-in entities [:room :entities target-id])
|
||||
[[target-x target-y] remainder] @targets-left]
|
||||
(let [delta-x (- target-x from-x)
|
||||
delta-y (- target-y from-y)
|
||||
distance (utils/dist from-x from-y target-x target-y)
|
||||
speed (* (or scale-x 1.0) 1.5)
|
||||
speed (* speed
|
||||
(/ (:delta-time screen)
|
||||
(/ 1.0 60.0)))
|
||||
moved-x (if (= 0.0 distance)
|
||||
0
|
||||
(* speed (/ delta-x distance)))
|
||||
moved-y (if (= 0.0 distance)
|
||||
0
|
||||
(* speed (/ delta-y distance)))]
|
||||
(if (< distance speed)
|
||||
(do (swap! targets-left rest)
|
||||
(-> entities
|
||||
(assoc-in [:room :entities target-id :x] target-x)
|
||||
(assoc-in [:room :entities target-id :y] target-y)
|
||||
(assoc-in [:step-particles :x] target-x)
|
||||
(assoc-in [:step-particles :y] target-y)))
|
||||
(update-in entities [:room :entities target-id]
|
||||
#(start-animation screen
|
||||
(assoc (jump-to screen entities % [(+ moved-x from-x) (+ moved-y from-y)] true)
|
||||
:facing (cond force-dir force-dir
|
||||
(< delta-x 0) :left
|
||||
(> delta-x 0) :right
|
||||
:else (:facing %)))
|
||||
:walk
|
||||
))))))
|
||||
(loop [entities entities
|
||||
base-speed (* 1.5
|
||||
(/ (:delta-time screen)
|
||||
(/ 1.0 60.0))
|
||||
1.0)]
|
||||
(let [{from-x :x from-y :y :keys [left right scale-x] :as target-entity} (get-in entities [:room :entities target-id])
|
||||
[[target-x target-y] remainder] @targets-left]
|
||||
(let [delta-x (- target-x from-x)
|
||||
delta-y (- target-y from-y)
|
||||
distance (utils/dist from-x from-y target-x target-y)
|
||||
speed (* (or scale-x 1.0) base-speed)
|
||||
moved-x (if (= 0.0 distance)
|
||||
0
|
||||
(* speed (/ delta-x distance)))
|
||||
moved-y (if (= 0.0 distance)
|
||||
0
|
||||
(* speed (/ delta-y distance)))]
|
||||
(cond (<= speed 0)
|
||||
entities
|
||||
|
||||
(> distance speed)
|
||||
(update-in entities [:room :entities target-id]
|
||||
#(start-animation screen
|
||||
(assoc (jump-to screen entities % [(+ moved-x from-x) (+ moved-y from-y)] true)
|
||||
:facing (cond force-dir force-dir
|
||||
(< delta-x 0) :left
|
||||
(> delta-x 0) :right
|
||||
:else (:facing %)))
|
||||
:walk
|
||||
))
|
||||
|
||||
(seq remainder)
|
||||
(do
|
||||
(swap! targets-left rest)
|
||||
(recur (-> entities
|
||||
(assoc-in [:room :entities target-id :x] target-x)
|
||||
(assoc-in [:room :entities target-id :y] target-y)
|
||||
(assoc-in [:step-particles :x] target-x)
|
||||
(assoc-in [:step-particles :y] target-y))
|
||||
(- base-speed distance)))
|
||||
|
||||
:else
|
||||
(-> entities
|
||||
(assoc-in [:room :entities target-id :x] target-x)
|
||||
(assoc-in [:room :entities target-id :y] target-y)
|
||||
(assoc-in [:step-particles :x] target-x)
|
||||
(assoc-in [:step-particles :y] target-y)))))))
|
||||
|
||||
(done? [this screen entities]
|
||||
(let [{from-x :x from-y :y :keys [left right anim] :as target-entity} (get-in entities [:room :entities target-id])]
|
||||
|
||||
Reference in New Issue
Block a user