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

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

[nongnu] elpa/pacmacs 4862789072 335/472: Terrify/unterrify ghost withou


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs 4862789072 335/472: Terrify/unterrify ghost without losing state
Date: Thu, 6 Jan 2022 21:59:37 -0500 (EST)

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

    Terrify/unterrify ghost without losing state
    
    (#171)
---
 pacmacs.el | 44 ++++++++++++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/pacmacs.el b/pacmacs.el
index d93ee1a437..205a0932f1 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -438,22 +438,42 @@
       (funcall new-constructor row column))
     (funcall old-destructor game-object)))
 
+(defun pacmacs--terrified-ghost-timed-out-p (terrified-ghost)
+  (<= (plist-get terrified-ghost :terrified-timer) 0))
+
+(defun pacmacs--terrify-ghost (ghost)
+  (plist-put ghost :current-animation
+             (pacmacs-load-anim "Terrified-Ghost"))
+  (plist-put ghost :switch-direction-callback
+             #'pacmacs--switch-direction-callback)
+  (plist-put ghost :type 'terrified-ghost)
+  (plist-put ghost :terrified-timer
+             pacmacs--ghost-terrified-time-ms)
+  ghost)
+
+(defun pacmacs--unterrify-ghost (terrified-ghost)
+  (plist-put terrified-ghost :switch-direction-callback
+             (pacmacs--switch-direction-animation-callback "Red-Ghost"))
+  (plist-put terrified-ghost :type 'ghost)
+  (pacmacs--switch-direction terrified-ghost
+                             (plist-get terrified-ghost :direction))
+  terrified-ghost)
+
 (defun pacmacs--terrify-all-ghosts ()
-  (pacmacs--replace-game-objects pacmacs--ghosts
-                                 #'pacmacs--create-terrified-ghost
-                                 #'pacmacs--remove-object)
+  (dolist (ghost pacmacs--ghosts)
+    (add-to-list 'pacmacs--terrified-ghosts
+                 (pacmacs--terrify-ghost ghost)))
   (setq pacmacs--ghosts nil))
 
 (defun pacmacs--unterrify-timed-out-ghosts ()
-  (let ((timed-out-predicate
-         (-lambda (terrified-ghost)
-           (<= (plist-get terrified-ghost :terrified-timer) 0))))
-    (pacmacs--replace-game-objects
-     (-filter timed-out-predicate pacmacs--terrified-ghosts)
-     #'pacmacs--create-ghost
-     #'pacmacs--remove-object)
-    (setq pacmacs--terrified-ghosts (-remove timed-out-predicate
-                                             pacmacs--terrified-ghosts))))
+  (dolist (terrified-ghost (-filter #'pacmacs--terrified-ghost-timed-out-p
+                                    pacmacs--terrified-ghosts))
+    (add-to-list 'pacmacs--ghosts
+                 (pacmacs--unterrify-ghost terrified-ghost)))
+
+  (setq pacmacs--terrified-ghosts
+        (-remove #'pacmacs--terrified-ghost-timed-out-p
+                 pacmacs--terrified-ghosts)))
 
 (defun pacmacs--detect-pill-collision ()
   (plist-bind ((row :row)



reply via email to

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