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

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

[nongnu] elpa/pacmacs 54e77a2d10 408/472: Use Emacs Widget Library to as


From: ELPA Syncer
Subject: [nongnu] elpa/pacmacs 54e77a2d10 408/472: Use Emacs Widget Library to ask nickname (#134)
Date: Thu, 6 Jan 2022 21:59:44 -0500 (EST)

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

    Use Emacs Widget Library to ask nickname (#134)
---
 pacmacs.el | 109 +++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 62 insertions(+), 47 deletions(-)

diff --git a/pacmacs.el b/pacmacs.el
index 1de9f5a3be..34e997d899 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -400,7 +400,8 @@
                                (pacmacs--load-next-level)
                                (pacmacs--switch-to-prepare-state)))))
 
-  (pacmacs--render-state))
+  (when (not (equal pacmacs-game-state 'game-over))
+    (pacmacs--render-state)))
 
 (defun pacmacs--step-ghosts ()
   (dolist (ghost pacmacs--ghosts)
@@ -576,23 +577,43 @@
                          (pacmacs--read-score-table)))
            (new-score-position (pacmacs--position-of-new-score
                                 score-table
-                                pacmacs-score)))
-      (->> score-table
-           (-take new-score-position)
-           (pacmacs--render-score-table))
-      (pacmacs--render-score-record (cons "" pacmacs-score))
-      (->> score-table
-           (-drop new-score-position)
-           (pacmacs--render-score-table))
-
-      (plist-bind ((width :width)
-                   (height :height))
-          pacmacs--object-board
-        (goto-line (+ height pacmacs--score-table-render-offset (1+ 
new-score-position)))
-        (put-text-property (point-min) (point-max) 'read-only t)
-        (let ((inhibit-read-only t))
-          (remove-text-properties (point) (+ (point) 
pacmacs--max-score-nick-size) '(read-only nil)))
-        (overwrite-mode 1)))))
+                                pacmacs-score))
+           (nickname-widget nil))
+      (if (< new-score-position pacmacs--max-score-table-size)
+          (progn
+            (->> score-table
+                 (-take new-score-position)
+                 (pacmacs--render-score-table))
+            (setq nickname-widget
+                  (widget-create 'editable-field
+                                 :size pacmacs--max-score-nick-size
+                                 :action (lambda (widget &optional event)
+                                           (let ((nickname (widget-value 
widget)))
+                                             (pacmacs--add-entry-to-score-table
+                                              nickname
+                                              pacmacs-score)
+                                             (widget-delete widget)
+                                             (let ((inhibit-read-only t))
+                                               (insert (format "%s"
+                                                               (make-string
+                                                                (max 0
+                                                                     (- 
pacmacs--max-score-nick-size
+                                                                        
(length nickname)))
+                                                                ?\s))))))
+
+                                 ""))
+            (insert (format " %d\n" pacmacs-score))
+            (->> score-table
+                 (-drop new-score-position)
+                 (pacmacs--render-score-table))
+
+            (plist-bind ((width :width)
+                         (height :height))
+                pacmacs--object-board
+              (goto-line (+ height pacmacs--score-table-render-offset (1+ 
new-score-position)))))
+        (pacmacs--render-score-table score-table))
+      (use-local-map widget-keymap)
+      (widget-setup))))
 
 (defun pacmacs--switch-to-play-state ()
   (setq pacmacs-game-state 'play)
@@ -625,35 +646,29 @@
     (pacmacs--put-object wall)))
 
 (defun pacmacs--render-state ()
-  (when (or (not (equal pacmacs-game-state 'game-over))
-            (not pacmacs-game-over-state-rendered))
-    (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))
-
-        (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))
-
-        (when (equal pacmacs-game-state 'game-over)
-          (setq pacmacs-game-over-state-rendered t))
-        
-        (goto-char 0)))))
+  (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))
+
+      (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))))
 
 (defun pacmacs--unpaused-play-state-p ()
   (and (equal pacmacs-game-state 'play)



reply via email to

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