[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/pacmacs b7caafa647 436/472: Merge pull request #200 from c
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/pacmacs b7caafa647 436/472: Merge pull request #200 from codingteam/customize-level-folder-191 |
Date: |
Thu, 6 Jan 2022 21:59:46 -0500 (EST) |
branch: elpa/pacmacs
commit b7caafa647c9bd988db50919765ede7c2e55efe7
Merge: 542e38a612 7f980e59a4
Author: Alexey Kutepov <reximkut@gmail.com>
Commit: Alexey Kutepov <reximkut@gmail.com>
Merge pull request #200 from codingteam/customize-level-folder-191
Customize level folder
---
Cask | 1 +
pacmacs.el | 47 +++++++++++++++++++++++++++++++++++++------
{maps => signs}/game-over.txt | 0
3 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/Cask b/Cask
index 9f5be6eb2f..f266b0edf2 100644
--- a/Cask
+++ b/Cask
@@ -5,6 +5,7 @@
(files "*.el"
("maps" "maps/*.txt")
+ ("signs" "signs/*.txt")
("sprites" "sprites/*.json")
("sprites" "sprites/*.xpm"))
diff --git a/pacmacs.el b/pacmacs.el
index 0ac35b98d8..8e008f0fa8 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -83,6 +83,18 @@
(defvar pacmacs-waiting-counter 0)
+(defgroup pacmacs nil
+ "Customizations for Pacmacs game."
+ :prefix "pacmacs-"
+ :group 'wp
+ :link '(url-link "https://github.com/codingteam/pacmacs.el"))
+
+(defcustom pacmacs-levels-folder nil
+ "A folder from where the Pacmacs game loads its levels."
+ :group 'pacmacs
+ :type '(radio (const :tag "Default path")
+ (directory :tag "Custom path")))
+
(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)
@@ -111,6 +123,12 @@
(setq pacmacs-lives 3)
(setq pacmacs-score 0)
(setq pacmacs-levels (pacmacs--get-list-of-levels))
+
+ (when (zerop (length pacmacs-levels))
+ (error (concat "`%s' doesn't contain levels. Nothing to play. "
+ "Customize `pacmacs-levels-folder' accordingly")
+ (pacmacs--get-levels-folder)))
+
(setq pacmacs-current-level 0)
(pacmacs--load-current-level)
@@ -574,7 +592,7 @@
(widget-delete widget))))
(defun pacmacs--switch-to-game-over-state ()
- (pacmacs--load-map "game-over")
+ (pacmacs--load-map-sign "game-over")
(pacmacs-destroy)
(setq pacmacs-game-state 'game-over)
(pacmacs--render-state)
@@ -695,8 +713,17 @@
(when (equal pacmacs-game-state 'play)
(setq pacmacs-play-pause (not pacmacs-play-pause))))
+(defun pacmacs--get-levels-folder ()
+ (if pacmacs-levels-folder
+ pacmacs-levels-folder
+ (pacmacs--find-resource-file "./maps/")))
+
(defun pacmacs--get-list-of-levels ()
- (->> (directory-files (pacmacs--find-resource-file "./maps/"))
+ (->> (condition-case err
+ (directory-files (pacmacs--get-levels-folder))
+ (file-error (error (concat "Error during loading levels: `%s'. "
+ "Customize `pacmacs-levels-folder'
accordingly.")
+ err)))
(-map #'pacmacs--levelname-from-filename)
(-remove #'null)
(-sort #'string-lessp)
@@ -711,10 +738,18 @@
(pacmacs--possible-diagonal-ways row column)))))
(defun pacmacs--load-map (map-name)
- (let* ((lines (split-string (->> map-name
- (format "./maps/%s.txt")
- (pacmacs--find-resource-file)
- (f-read-text))
+ (->> map-name
+ (format "%s/%s.txt" (pacmacs--get-levels-folder))
+ (pacmacs--load-map-file)))
+
+(defun pacmacs--load-map-sign (sign-name)
+ (->> sign-name
+ (format "./signs/%s.txt")
+ (pacmacs--find-resource-file)
+ (pacmacs--load-map-file)))
+
+(defun pacmacs--load-map-file (map-file-name)
+ (let* ((lines (split-string (f-read-text map-file-name)
"\n" t))
(board-width (apply 'max (mapcar #'length lines)))
(board-height (length lines)))
diff --git a/maps/game-over.txt b/signs/game-over.txt
similarity index 100%
rename from maps/game-over.txt
rename to signs/game-over.txt
- [nongnu] elpa/pacmacs 784b5c60e4 350/472: Merge pull request #177 from codingteam/qfix/broken-att-script, (continued)
- [nongnu] elpa/pacmacs 784b5c60e4 350/472: Merge pull request #177 from codingteam/qfix/broken-att-script, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b7a57c2d8e 353/472: Remove w/o BP tutorial level (#162), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 4ce9773129 365/472: Merge pull request #183 from codingteam/push-instead-of-add-to-list-182, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 25e1fc9f85 369/472: Interactive function to clean wall cache (#138), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b8ad3a5421 370/472: Fix game over sign (#138), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 78be23ea40 392/472: Remove make-terrifed-ghost function, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 1d52833fef 406/472: Add render-score-record function (#134), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs bd030753f0 411/472: Reset pacmacs-score to 0 (#134), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 542e38a612 429/472: Fix README for sprites folder, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 7f980e59a4 435/472: Load game-over sign from signs folder (#191), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b7caafa647 436/472: Merge pull request #200 from codingteam/customize-level-folder-191,
ELPA Syncer <=
- [nongnu] elpa/pacmacs f174ccb540 438/472: Enable truncate-lines for Game Over page (#201), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs bc62e40d25 444/472: Make rendering more reusable (#203), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 314809f2a7 443/472: Merge branch 'master' into feature/awesome-score-sign-203, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 5f12be8d33 450/472: Move render-object-board to pacmacs-render module, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 929b367fa2 453/472: Make render-score-table more dumb (#203), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 548155de50 456/472: Dash the mode labels (#203), ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 5e0bcba1ee 468/472: Merge pull request #224 from basil-conto/blc/dash, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs b68e557f36 064/472: Refactor pacman-load-anim function. Close #53, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 3a3ead9ac1 083/472: Support dash. Close #65, ELPA Syncer, 2022/01/06
- [nongnu] elpa/pacmacs 6365c3db7b 086/472: Remove ghost-state instead of player-state, ELPA Syncer, 2022/01/06