[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs 9e7f67e368 126/472: Implement live mechanics. Clos
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs 9e7f67e368 126/472: Implement live mechanics. Close #86 |
Date: |
Thu, 6 Jan 2022 21:59:18 -0500 (EST) |
branch: elpa/pacmacs
commit 9e7f67e368eeb68b1b2a18519806e753c286f3a2
Author: rexim <reximkut@gmail.com>
Commit: rexim <reximkut@gmail.com>
Implement live mechanics. Close #86
---
pacmacs.el | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/pacmacs.el b/pacmacs.el
index ae9a1316e3..cbb050c575 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -73,6 +73,9 @@
(defvar pacmacs-game-state 'play)
+(defvar pacmacs-lives 3)
+(defvar pacmacs-live-icon nil)
+
(define-derived-mode pacmacs-mode special-mode "pacmacs-mode"
(define-key pacmacs-mode-map (kbd "<up>") 'pacmacs-up)
(define-key pacmacs-mode-map (kbd "<down>") 'pacmacs-down)
@@ -87,6 +90,7 @@
(switch-to-buffer-other-window pacmacs-buffer-name)
(pacmacs-mode)
(pacmacs-load-map "map05")
+ (setq pacmacs-lives 3)
(unless pacmacs-timer
(setq pacmacs-timer (run-at-time nil (* pacmacs-tick-duration-ms 0.001)
'pacmacs-tick))))
@@ -178,6 +182,13 @@
(plist-put game-object :direction direction)
(plist-put game-object :current-animation (plist-get direction-animations
direction))))
+(defun pacmacs--render-live-icon ()
+ (when (not pacmacs-live-icon)
+ (setq pacmacs-live-icon
+ (pacmacs-load-anim "Pacman-Chomping-Right"))
+ (plist-put pacmacs-live-icon :current-frame 2))
+ (pacmacs-render-anim pacmacs-live-icon))
+
(defun pacmacs--make-empty-cell ()
(if pacmacs-empty-cell
pacmacs-empty-cell
@@ -318,18 +329,22 @@
(defun pacmacs-death-state-logic ()
(pacmacs-anim-object-next-frame pacmacs-player-state
pacmacs-tick-duration-ms)
+
(when (= 0 (plist-get
(plist-get pacmacs-player-state
:current-animation)
:current-frame))
(pacmacs--switch-to-play-state)))
-(defun pacmacs-render-object (anim-object)
- (let* ((anim (plist-get anim-object :current-animation))
- (sprite-sheet (plist-get anim :sprite-sheet))
+(defun pacmacs-render-anim (anim)
+ (let* ((sprite-sheet (plist-get anim :sprite-sheet))
(current-frame (plist-get (pacmacs-anim-get-frame anim) :frame)))
(pacmacs-insert-image sprite-sheet current-frame)))
+(defun pacmacs-render-object (anim-object)
+ (let* ((anim (plist-get anim-object :current-animation)))
+ (pacmacs-render-anim anim)))
+
(defun pacmacs--put-object (anim-object)
(plist-bind ((row :row)
(column :column))
@@ -338,6 +353,7 @@
(defun pacmacs--switch-to-death-state ()
(setq pacmacs-game-state 'death)
+ (decf pacmacs-lives)
(plist-put pacmacs-player-state :current-animation
(pacmacs-load-anim "Pacman-Death")))
@@ -394,7 +410,9 @@
(dotimes (column width)
(let ((anim-object (pacmacs--cell-get pacmacs-board row column)))
(pacmacs-render-object anim-object)))
- (insert "\n"))))
+ (insert "\n")))
+ (dotimes (i pacmacs-lives)
+ (pacmacs--render-live-icon)))
(defun pacmacs-up ()
(interactive)
- [nongnu] elpa/pacmacs 6d1831c746 081/472: Implement ghost mechanics. Close #62, (continued)
- [nongnu] elpa/pacmacs 6d1831c746 081/472: Implement ghost mechanics. Close #62, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 427b4f823e 088/472: Add edebug specs for plist-bind macro (#68), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1ed7f14e30 099/472: UTs for pacmacs--init-board-test (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs a802074eea 109/472: Add set/get functions for board (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs de66c1ce17 112/472: Refactor out pacmacs--step-point (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b0561eb59f 111/472: Refactor pacmacs--cell-tracked-p (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 317f9b85b7 114/472: Refactor pacmacs--track-point (#74), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 5233bac0c5 105/472: UT for pacmacs--put-object-test (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs d2c449734e 124/472: Merge branch 'pacman-death-69'. Close #69, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1ed9c057cc 127/472: Add padding above the lives, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 9e7f67e368 126/472: Implement live mechanics. Close #86,
ELPA Syncer <=
- [nongnu] elpa/pacmacs 86d701a167 131/472: Introduce pacmacs--load-next-level, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 3d49405193 136/472: Reset the score on start, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs a0e3b6fe73 138/472: Implement level is beaten state. Close #99, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 359a0facc5 140/472: Optimize empty cell rendering, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 420dbec3e6 150/472: Register score on Game Over (#92), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 6f174d6239 156/472: Access resources in more general way (#95), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 330c69201f 160/472: Fix UTs, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 131a070556 163/472: Merge pull request #110 from syohex/fix-package, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs bb622648e3 162/472: Add Package-Requires header for dependencies, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 0c0aee723a 170/472: Fix regexp bug in pacmacs--levelname-from-filename, ELPA Syncer, 2022/01/06