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

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

[nongnu] elpa/pacmacs 99a90b9c87 125/472: Fix the tunneling effect. Clos


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs 99a90b9c87 125/472: Fix the tunneling effect. Close #88
Date: Thu, 6 Jan 2022 21:59:18 -0500 (EST)

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

    Fix the tunneling effect. Close #88
---
 maps/map06.txt |  3 +++
 pacmacs.el     | 37 +++++++++++++++++++++++++------------
 2 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/maps/map06.txt b/maps/map06.txt
new file mode 100644
index 0000000000..7febcfcead
--- /dev/null
+++ b/maps/map06.txt
@@ -0,0 +1,3 @@
+############
+#o        g#
+############
diff --git a/pacmacs.el b/pacmacs.el
index 0bb23a78b6..ae9a1316e3 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -44,7 +44,8 @@
 
 (defconst pacmacs-buffer-name "*Pacmacs*")
 (defconst pacmacs-tick-duration-ms 100)
-(defconst pacmacs-debug-output nil)
+
+(defvar pacmacs-debug-output nil)
 
 (defvar pacmacs-timer nil)
 
@@ -271,19 +272,12 @@
       (erase-buffer)
       (pacmacs-render-state))))
 
-(defun pacmacs-play-state-logic ()
-  (pacmacs-anim-object-next-frame pacmacs-player-state 
pacmacs-tick-duration-ms)
-  (dolist (ghost pacmacs-ghosts)
-    (pacmacs-anim-object-next-frame ghost pacmacs-tick-duration-ms))
-  (dolist (pill pacmacs-pills)
-    (pacmacs-anim-object-next-frame pill pacmacs-tick-duration-ms))
-  
-  (pacmacs-step-object pacmacs-player-state)
-  (pacmacs--recalc-track-board)
+(defun pacmacs--step-ghosts ()
   (dolist (ghost pacmacs-ghosts)
     (pacmacs--track-object ghost)
-    (pacmacs-step-object ghost))
+    (pacmacs-step-object ghost)))
 
+(defun pacmacs--detect-pill-collision ()
   (plist-bind ((row :row)
                (column :column))
       pacmacs-player-state
@@ -296,11 +290,30 @@
                                pill
                              (and (= row p-row)
                                   (= column p-column))))
-                       pacmacs-pills)))
+                       pacmacs-pills)))))
 
+(defun pacmacs--detect-ghost-collision ()
+  (plist-bind ((row :row)
+               (column :column))
+      pacmacs-player-state
     (-when-let (ghost (pacmacs--ghost-at-p row column))
       (pacmacs--switch-to-death-state))))
 
+(defun pacmacs-play-state-logic ()
+  (pacmacs-anim-object-next-frame pacmacs-player-state 
pacmacs-tick-duration-ms)
+  (dolist (ghost pacmacs-ghosts)
+    (pacmacs-anim-object-next-frame ghost pacmacs-tick-duration-ms))
+  (dolist (pill pacmacs-pills)
+    (pacmacs-anim-object-next-frame pill pacmacs-tick-duration-ms))
+
+  (pacmacs--recalc-track-board)
+  (pacmacs--detect-ghost-collision)
+  (when (equal pacmacs-game-state 'play)
+    (pacmacs-step-object pacmacs-player-state)
+    (pacmacs--detect-pill-collision)
+    (pacmacs--detect-ghost-collision)
+    (when (equal pacmacs-game-state 'play)
+      (pacmacs--step-ghosts))))
 
 (defun pacmacs-death-state-logic ()
   (pacmacs-anim-object-next-frame pacmacs-player-state



reply via email to

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