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

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

[nongnu] elpa/pacmacs 1eadfb94fd 225/472: Refactor out pacmacs--wall-cel


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs 1eadfb94fd 225/472: Refactor out pacmacs--wall-cells list (#81)
Date: Thu, 6 Jan 2022 21:59:27 -0500 (EST)

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

    Refactor out pacmacs--wall-cells list (#81)
---
 pacmacs.el | 61 ++++++++++++++++++++++++-------------------------------------
 1 file changed, 24 insertions(+), 37 deletions(-)

diff --git a/pacmacs.el b/pacmacs.el
index d6e85227c4..08a64bcc3a 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -58,10 +58,10 @@
 
 (defvar pacmacs--player-state nil)
 (defvar pacmacs--ghosts nil)
-(defvar pacmacs--wall-cells nil)
 (defvar pacmacs--pills nil)
 (defvar pacmacs--big-pills nil)
 
+(defvar pacmacs--object-list nil)
 (defvar pacmacs--object-board nil)
 (defvar pacmacs--track-board nil)
 
@@ -423,21 +423,9 @@
   (setq pacmacs-waiting-counter 1000))
 
 (defun pacmacs--fill-object-board ()
-  (pacmacs--fill-board pacmacs--object-board nil)
-
-  (dolist (pill pacmacs--pills)
-    (pacmacs--put-object pill))
-
-  (dolist (ghost pacmacs--ghosts)
-    (pacmacs--put-object ghost))
-
-  (pacmacs--put-object pacmacs--player-state)
-  
-  (dolist (wall pacmacs--wall-cells)
-    (pacmacs--put-object wall))
-
-  (dolist (big-pill pacmacs--big-pills)
-    (pacmacs--put-object big-pill)))
+  (-each pacmacs--object-list
+    (-lambda ((_ . objects))
+      (-each objects #'pacmacs--put-object))))
 
 (defun pacmacs--render-state ()
   (with-current-buffer pacmacs-buffer-name
@@ -505,6 +493,17 @@
        (-sort #'string-lessp)
        (apply #'vector)))
 
+(defun pacmacs--lines-to-objects (lines)
+  (apply #'append
+         (cl-loop
+          for line being the element of lines using (index row)
+          collect (cl-loop for x being the element of line using (index column)
+                           collect (cond ((char-equal x ?#) 
(pacmacs--make-wall-cell row column))
+                                         ((char-equal x ?.) 
(pacmacs--make-regular-pill row column))
+                                         ((char-equal x ?+) 
(pacmacs--make-big-pill row column))
+                                         ((char-equal x ?o) 
(pacmacs--make-player row column))
+                                         ((char-equal x ?g) 
(pacmacs--make-ghost row column)))))))
+
 (defun pacmacs--load-map (map-name)
   (let* ((lines (split-string (->> map-name
                                    (format "./maps/%s.txt")
@@ -518,29 +517,17 @@
     (setq pacmacs--track-board (pacmacs--make-board board-width
                                                     board-height))
 
-    (setq pacmacs--wall-cells nil)
-    (setq pacmacs--pills nil)
-    (setq pacmacs--ghosts nil)
-    (setq pacmacs--player-state nil)
-    (setq pacmacs--big-pills nil)
-
-    (cl-loop
-     for line being the element of lines using (index row)
-     do (cl-loop for x being the element of line using (index column)
-                 do (cond ((char-equal x ?#)
-                           (add-to-list 'pacmacs--wall-cells 
(pacmacs--make-wall-cell row column)))
-
-                          ((char-equal x ?.)
-                           (add-to-list 'pacmacs--pills 
(pacmacs--make-regular-pill row column)))
-
-                          ((char-equal x ?+)
-                           (add-to-list 'pacmacs--big-pills 
(pacmacs--make-big-pill row column)))
+    (setq pacmacs--object-list
+          (->> lines
+               (pacmacs--lines-to-objects)
+               (-remove #'null)
+               (-group-by (-partial (-flip #'plist-get) :type))))
 
-                          ((char-equal x ?o)
-                           (setq pacmacs--player-state (pacmacs--make-player 
row column)))
+    (setq pacmacs--pills (cdr (assoc 'pill pacmacs--object-list)))
+    (setq pacmacs--ghosts (cdr (assoc 'ghost pacmacs--object-list)))
+    (setq pacmacs--player-state (cadr (assoc 'player pacmacs--object-list)))
+    (setq pacmacs--big-pills (cdr (assoc 'big-pill pacmacs--object-list)))
 
-                          ((char-equal x ?g)
-                           (add-to-list 'pacmacs--ghosts (pacmacs--make-ghost 
row column))))))
     (pacmacs--fill-object-board)))
 
 (provide 'pacmacs)



reply via email to

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