emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/pacmacs fa83e10d82 325/472: Get rid of dup code in track o


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs fa83e10d82 325/472: Get rid of dup code in track object mech (#159)
Date: Thu, 6 Jan 2022 21:59:36 -0500 (EST)

branch: elpa/pacmacs
commit fa83e10d82ea880682bb6f9ea6c8cd52d25b779e
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>

    Get rid of dup code in track object mech (#159)
---
 pacmacs.el           | 26 +++++++++++++-------------
 test/pacmacs-test.el |  4 ++--
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/pacmacs.el b/pacmacs.el
index 82fe6eaee8..d93ee1a437 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -355,7 +355,7 @@
                     (append next-wave candidate-ways))))
           (setq wave next-wave))))))
 
-(defun pacmacs--track-object-direction (game-object sort-comparator)
+(defun pacmacs--track-object-direction (game-object distance-comparator)
   (plist-bind ((row :row)
                (column :column))
       game-object
@@ -370,25 +370,25 @@
                                                                    
candidate-column))
                                       candidate-ways))
            (next-tile (->> (-zip candidate-distances candidate-ways)
-                           (-sort sort-comparator)
+                           (-sort (-lambda ((distance-1 . _) (distance-2 . _))
+                                    (funcall distance-comparator
+                                             distance-1 distance-2)))
                            (cdar))))
       (when next-tile
         (->> (pacmacs--vector- next-tile (cons row column))
              (pacmacs--direction-name))))))
 
-(defun pacmacs--track-object (game-object)
+(defun pacmacs--track-object (game-object distance-comparator)
   (-when-let (direction (pacmacs--track-object-direction
                          game-object
-                         (-lambda ((distance-1 . _) (distance-2 . _))
-                           (< distance-1 distance-2))))
+                         distance-comparator))
     (pacmacs--switch-direction game-object direction)))
 
-(defun pacmacs--back-track-object (game-object)
-  (-when-let (direction (pacmacs--track-object-direction
-                         game-object
-                         (-lambda ((distance-1 . _) (distance-2 . _))
-                           (> distance-1 distance-2))))
-    (pacmacs--switch-direction game-object direction)))
+(defun pacmacs--track-object-to-player (game-object)
+  (pacmacs--track-object game-object #'<))
+
+(defun pacmacs--track-object-from-player (game-object)
+  (pacmacs--track-object game-object #'>))
 
 (defun pacmacs-tick ()
   (interactive)
@@ -409,12 +409,12 @@
 
 (defun pacmacs--step-ghosts ()
   (dolist (ghost pacmacs--ghosts)
-    (pacmacs--track-object ghost)
+    (pacmacs--track-object-to-player ghost)
     (pacmacs--step-object ghost)))
 
 (defun pacmacs--step-terrified-ghosts ()
   (dolist (terrified-ghost pacmacs--terrified-ghosts)
-    (pacmacs--back-track-object terrified-ghost)
+    (pacmacs--track-object-from-player terrified-ghost)
     (pacmacs--step-object terrified-ghost)))
 
 (defun pacmacs--create-game-object (row column list-name constructor)
diff --git a/test/pacmacs-test.el b/test/pacmacs-test.el
index a8d6e650e8..c0ce55d0ec 100644
--- a/test/pacmacs-test.el
+++ b/test/pacmacs-test.el
@@ -7,7 +7,7 @@
     (should (not (pacmacs--cell-tracked-p 0 0)))
     (should (pacmacs--cell-tracked-p 1 0))))
 
-(ert-deftest pacmacs--track-object-test ()
+(ert-deftest pacmacs--track-object-to-player-test ()
   (let ((pacmacs--track-board (list :width 3
                                     :height 2
                                     :data [[2 1 2]
@@ -17,7 +17,7 @@
     (with-mock
      (mock (pacmacs--wall-at-p * *) => nil)
      (mock (pacmacs--switch-direction (list :row 0 :column 0) 'right) :times 1)
-     (pacmacs--track-object game-object))))
+     (pacmacs--track-object-to-player game-object))))
 
 (ert-deftest pacmacs--put-object-test ()
   (let ((pacmacs--object-board (list :width 2



reply via email to

[Prev in Thread] Current Thread [Next in Thread]