diff --git a/desktop/resources/pathfind-test-big.png b/desktop/resources/pathfind-test-big.png index eccd3afe..4847182d 100644 Binary files a/desktop/resources/pathfind-test-big.png and b/desktop/resources/pathfind-test-big.png differ diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj index ff438347..bd71fc5b 100644 --- a/desktop/src-common/advent/core.clj +++ b/desktop/src-common/advent/core.clj @@ -56,17 +56,20 @@ [target-x target-y] (first target-path) target {:x target-x :y target-y}] (if (and target (seq target-path)) - (let [ - delta-x (- (:x target) (:x ego)) + (let [delta-x (- (:x target) (:x ego)) delta-y (- (:y target) (:y ego)) mag (Math/sqrt (+ (* delta-x delta-x) (* delta-y delta-y))) vector-x (* 1.5 (/ delta-x mag)) vector-y (* 1.5 (/ delta-y mag))] (if (< mag 1) (update-in ego [:target-path] rest) - (-> ego - (update-in [:x] #(+ % vector-x)) - (update-in [:y] #(+ % vector-y))))) + (merge (-> ego + (update-in [:x] #(+ % vector-x)) + (update-in [:y] #(+ % vector-y)) + (assoc-in [:anim] (if (< vector-x 0) + (:left ego) + (:right ego)))) + (animation->texture screen (:anim ego))))) (dissoc ego :target-path)))) (defscreen main-screen