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