branch: elpa/pacmacs
commit fa83e10d82ea880682bb6f9ea6c8cd52d25b779e
Author: rexim <[email protected]>
Commit: rexim <[email protected]>
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