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

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

[nongnu] elpa/pacmacs a0e3b6fe73 138/472: Implement level is beaten stat


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs a0e3b6fe73 138/472: Implement level is beaten state. Close #99
Date: Thu, 6 Jan 2022 21:59:19 -0500 (EST)

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

    Implement level is beaten state. Close #99
---
 pacmacs.el | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/pacmacs.el b/pacmacs.el
index 41de38e4ef..3b40f3e844 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -64,7 +64,7 @@
 (defvar pacmacs-board nil)
 (defvar pacmacs-track-board nil)
 
-;;; play death prepare
+;;; play death prepare level-beaten
 (defvar pacmacs-game-state 'play)
 
 (defvar pacmacs-lives 3)
@@ -74,7 +74,7 @@
                         "map04" "map05" "map06"])
 (defvar pacmacs-current-level 0)
 
-(defvar pacmacs-prepare-time-counter 0)
+(defvar pacmacs-waiting-counter 0)
 
 (define-derived-mode pacmacs-mode special-mode "pacmacs-mode"
   (define-key pacmacs-mode-map (kbd "<up>") 'pacmacs-up)
@@ -293,7 +293,11 @@
        ((equal pacmacs-game-state 'death)
         (pacmacs-death-state-logic))
        ((equal pacmacs-game-state 'prepare)
-        (pacmacs-prepare-state-logic)))
+        (pacmacs-waiting-logic #'pacmacs--switch-to-play-state))
+       ((equal pacmacs-game-state 'level-beaten)
+        (pacmacs-waiting-logic #'(lambda ()
+                                   (pacmacs--load-next-level)
+                                   (pacmacs--switch-to-prepare-state)))))
 
       (erase-buffer)
       (pacmacs-render-state))))
@@ -340,8 +344,7 @@
         (if (pacmacs--ghost-collision-p)
             (pacmacs--switch-to-death-state)
           (pacmacs--step-ghosts)))
-    (pacmacs--load-next-level)
-    (pacmacs--switch-to-prepare-state)))
+    (pacmacs--switch-to-level-beaten-state)))
 
 (defun pacmacs-death-state-logic ()
   (pacmacs-anim-object-next-frame pacmacs-player-state
@@ -353,10 +356,10 @@
               :current-frame))
     (pacmacs--switch-to-play-state)))
 
-(defun pacmacs-prepare-state-logic ()
-  (if (<= pacmacs-prepare-time-counter 0)
-      (pacmacs--switch-to-play-state)
-    (decf pacmacs-prepare-time-counter
+(defun pacmacs-waiting-logic (switcher)
+  (if (<= pacmacs-waiting-counter 0)
+      (funcall switcher)
+    (decf pacmacs-waiting-counter
           pacmacs-tick-duration-ms)))
 
 (defun pacmacs-render-anim (anim)
@@ -389,7 +392,11 @@
 
 (defun pacmacs--switch-to-prepare-state ()
   (setq pacmacs-game-state 'prepare)
-  (setq pacmacs-prepare-time-counter 1000))
+  (setq pacmacs-waiting-counter 1000))
+
+(defun pacmacs--switch-to-level-beaten-state ()
+  (setq pacmacs-game-state 'level-beaten)
+  (setq pacmacs-waiting-counter 1000))
 
 (defun pacmacs-render-track-board ()
   (plist-bind ((width :width)



reply via email to

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