[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs c6436982fe 462/472: Merge pull request #207 from c
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs c6436982fe 462/472: Merge pull request #207 from codingteam/feature/awesome-score-sign-203 |
Date: |
Thu, 6 Jan 2022 21:59:49 -0500 (EST) |
branch: elpa/pacmacs
commit c6436982fef6f75ef9adebf17df0b02cbce31106
Merge: 9fd3009e5a cdae42dba5
Author: Alexey Kutepov <reximkut@gmail.com>
Commit: Alexey Kutepov <reximkut@gmail.com>
Merge pull request #207 from codingteam/feature/awesome-score-sign-203
Awesome score sign
---
pacmacs-render.el | 32 +++++++++++++++++++------
pacmacs-score.el | 18 ++++++--------
pacmacs.el | 70 ++++++++++++++++++++++++++++++++++---------------------
signs/scores.txt | 6 +++++
4 files changed, 81 insertions(+), 45 deletions(-)
diff --git a/pacmacs-render.el b/pacmacs-render.el
index 274a16a1d6..7c996a9b01 100644
--- a/pacmacs-render.el
+++ b/pacmacs-render.el
@@ -38,6 +38,12 @@
(defvar pacmacs--life-icon nil)
+(defmacro with-render-target (render-target-buffer &rest body)
+ (declare (indent 1) (debug (sexp &rest form)))
+ `(with-current-buffer ,render-target-buffer
+ (let ((inhibit-read-only t))
+ ,@body)))
+
(defun pacmacs--render-empty-cell ()
(pacmacs-insert-image (pacmacs--create-wall-tile
40 40
@@ -62,19 +68,31 @@
(pacmacs--render-anim anim))
(pacmacs--render-empty-cell)))
-(defun pacmacs--render-track-board (track-board)
+(defun pacmacs--render-track-cell (track-cell)
+ (insert "\t")
+ (if track-cell
+ (insert (int-to-string track-cell))
+ (insert ".")))
+
+(defun pacmacs--render-board (board cell-renderer)
(plist-bind ((width :width)
(height :height))
- track-board
+ board
(dotimes (row height)
(dotimes (column width)
- (let ((x (pacmacs--cell-wrapped-get track-board row column)))
- (insert "\t")
- (if x
- (insert (int-to-string x))
- (insert "."))))
+ (let ((cell (pacmacs--cell-wrapped-get board row column)))
+ (funcall cell-renderer cell)))
(insert "\n"))))
+(defun pacmacs--render-track-board (track-board)
+ (pacmacs--render-board track-board
+ #'pacmacs--render-track-cell))
+
+(defun pacmacs--render-object-board (object-board)
+ (pacmacs--render-board object-board
+ (-compose #'pacmacs--render-object #'car))
+ (insert "\n"))
+
(provide 'pacmacs-render)
;;; pacmacs-render.el ends here
diff --git a/pacmacs-score.el b/pacmacs-score.el
index 50b1381eb9..92c1c73ff0 100644
--- a/pacmacs-score.el
+++ b/pacmacs-score.el
@@ -41,17 +41,6 @@
(defconst pacmacs--score-file-name "~/.pacmacs-score")
(defconst pacmacs--score-buffer-name "*Pacmacs Score*")
-(defun pacmacs-score ()
- (interactive)
- (switch-to-buffer-other-window pacmacs--score-buffer-name)
- (text-mode)
- (read-only-mode)
- (with-current-buffer pacmacs--score-buffer-name
- (let ((inhibit-read-only t))
- (erase-buffer)
- (-> (pacmacs--read-score-table)
- (pacmacs--render-score-table)))))
-
(defun pacmacs--read-score-table ()
(when (file-exists-p pacmacs--score-file-name)
(->> pacmacs--score-file-name
@@ -79,6 +68,13 @@
(-take-while (-lambda ((_ . score)) (< new-score score)))
(length)))
+(defun pacmacs--render-score-page (render-score-sign)
+ (funcall render-score-sign)
+ (let ((score-table (pacmacs--read-score-table)))
+ (if score-table
+ (pacmacs--render-score-table score-table)
+ (insert "(there are not records yet)"))))
+
(defun pacmacs--render-score-table (score-table)
(-each score-table #'pacmacs--render-score-record))
diff --git a/pacmacs.el b/pacmacs.el
index 3a39786d6b..488bb3e4cc 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -106,11 +106,22 @@
(setq cursor-type nil)
(setq truncate-lines t))
-(define-derived-mode pacmacs-game-over-mode special-mode "Pacmacs Game Over"
+(define-derived-mode pacmacs-game-over-mode special-mode "Pacmacs-Game-Over"
(define-key pacmacs-game-over-mode-map (kbd "q") 'pacmacs-quit)
(setq cursor-type nil)
(setq truncate-lines t))
+(define-derived-mode pacmacs-scores-mode special-mode "Pacmacs-Scores"
+ (define-key pacmacs-game-over-mode-map (kbd "q")
+ (-partial #'pacmacs--kill-buffer-and-its-window
+ pacmacs--score-buffer-name))
+ (setq cursor-type nil)
+ (setq truncate-lines t))
+
+(defun pacmacs-toggle-debug-output ()
+ (interactive)
+ (setq pacmacs-debug-output (not pacmacs-debug-output)))
+
;;;###autoload
(defun pacmacs-start ()
(interactive)
@@ -422,7 +433,10 @@
(pacmacs--switch-to-prepare-state)))))
(when (not (equal pacmacs-game-state 'game-over))
- (pacmacs--render-state)))
+ (with-render-target pacmacs-buffer-name
+ (erase-buffer)
+ (pacmacs--render-state)
+ (goto-char (point-min)))))
(defun pacmacs--step-ghosts ()
(dolist (ghost pacmacs--ghosts)
@@ -601,14 +615,14 @@
(pacmacs--load-map-sign "game-over")
(pacmacs-destroy)
(setq pacmacs-game-state 'game-over)
- (pacmacs--render-state)
(fundamental-mode)
- (setq truncate-lines t)
(read-only-mode 0)
(with-current-buffer pacmacs-buffer-name
- (goto-char (point-max))
+ (erase-buffer)
+
+ (pacmacs--render-state)
(let* ((score-table (pacmacs--read-score-table))
(new-score-position (pacmacs--position-of-new-score
@@ -668,29 +682,16 @@
(pacmacs--put-object wall)))
(defun pacmacs--render-state ()
- (with-current-buffer pacmacs-buffer-name
- (let ((inhibit-read-only t))
- (erase-buffer)
+ (insert (format "Score: %d\n\n" pacmacs-score))
+
+ (when pacmacs-debug-output
+ (pacmacs--render-track-board pacmacs--track-board))
- (insert (format "Score: %d\n\n" pacmacs-score))
-
- (when pacmacs-debug-output
- (pacmacs--render-track-board pacmacs--track-board))
-
- (plist-bind ((width :width)
- (height :height))
- pacmacs--object-board
- (dotimes (row height)
- (dotimes (column width)
- (let ((anim-object (car (pacmacs--cell-wrapped-get
pacmacs--object-board
- row column))))
- (pacmacs--render-object anim-object)))
- (insert "\n")))
- (insert "\n")
- (dotimes (i pacmacs-lives)
- (ignore i)
- (pacmacs--render-life-icon))
- (goto-char 0))))
+ (pacmacs--render-object-board pacmacs--object-board)
+
+ (dotimes (i pacmacs-lives)
+ (ignore i)
+ (pacmacs--render-life-icon)))
(defun pacmacs--unpaused-play-state-p ()
(and (equal pacmacs-game-state 'play)
@@ -737,6 +738,21 @@
(-sort #'string-lessp)
(apply #'vector)))
+;;;###autoload
+(defun pacmacs-score ()
+ (interactive)
+
+ (switch-to-buffer pacmacs--score-buffer-name)
+ (pacmacs-scores-mode)
+ (pacmacs--load-map-sign "scores")
+
+ (with-render-target pacmacs--score-buffer-name
+ (erase-buffer)
+ (pacmacs--render-score-page
+ (-partial #'pacmacs--render-object-board
+ pacmacs--object-board))
+ (goto-char (point-min))))
+
(defun pacmacs--wall-tile-at (row column)
(pacmacs--create-wall-tile
40 40
diff --git a/signs/scores.txt b/signs/scores.txt
new file mode 100644
index 0000000000..34867a145b
--- /dev/null
+++ b/signs/scores.txt
@@ -0,0 +1,6 @@
+
+ ### ### ### ### ### ###
+ # # # # # # # #
+ ### # # # #### ### ###
+ # # # # # # # #
+ ### ### ### # # ### ###
- [nongnu] elpa/pacmacs 5db26b2e3d 154/472: Make the Game Over sign even more smaller, (continued)
- [nongnu] elpa/pacmacs 5db26b2e3d 154/472: Make the Game Over sign even more smaller, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 5b32c6f310 155/472: Package resources with Cask (#95), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs db03c57347 158/472: Add autoload cookie for pacmacs-start function, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7285f61d45 164/472: Require pacmacs-board in the pacmacs-render module, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b00db2f7fa 240/472: Use hashmap for tile cache instead of vector (#131), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 838833da41 414/472: Go to the beginning if score is not featured, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 75f7ddd459 418/472: Add UT for position-of-new-score func (#134), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs fb4885d0fc 420/472: Add UT for make-submit-nickname-action func (#134), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs f53a6d57b7 451/472: Fix the compilation error (#203), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 9d839d08c6 460/472: Bottom padding for object board (#203), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs c6436982fe 462/472: Merge pull request #207 from codingteam/feature/awesome-score-sign-203,
ELPA Syncer <=
- [nongnu] elpa/pacmacs 67660062fd 042/472: Add LICENSE files (#28), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 05e30ca856 076/472: Implement support for frame duration. Close #23, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 05c88e5eef 100/472: UTs for pacmacs--object-at-p (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 01388a06a0 104/472: UTs for pacmacs--track-object (#75), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs d9ddd5dab4 132/472: Refactor pacmacs--detect-ghost-collision (#97), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7601c1ae5c 143/472: Rename board vars to buffers (#105), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs e69a35e2b3 168/472: Small typo in the README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 63e41ffe23 169/472: Fix the dev workflow in the README, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 9525cd168b 172/472: Update README about the pause feature, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 98599015bb 229/472: Fix UTs broken by #133 implementation, ELPA Syncer, 2022/01/06