branch: elpa/pacmacs
commit 16b0d6583a1d56de6f92d1b6138ba6ec7d0696ce
Author: rexim <[email protected]>
Commit: rexim <[email protected]>
Get rid of the hardcoded level list. Close #109
---
pacmacs-utils.el | 4 ++++
pacmacs.el | 13 ++++++++++---
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/pacmacs-utils.el b/pacmacs-utils.el
index 798e7b4d31..ad5b31aa2a 100644
--- a/pacmacs-utils.el
+++ b/pacmacs-utils.el
@@ -70,6 +70,10 @@ side-effects."
(insert-file-contents filename)
(buffer-string)))
+(defun pacmacs--levelname-from-filename (filename)
+ (string-match "\\(map[0-9]+\\)\\.txt" filename)
+ (match-string 1 filename))
+
(provide 'pacmacs-utils)
;;; pacmacs.el ends here
diff --git a/pacmacs.el b/pacmacs.el
index 07c0546e80..114e2fa2bc 100644
--- a/pacmacs.el
+++ b/pacmacs.el
@@ -68,9 +68,7 @@
(defvar pacmacs-lives 3)
-
-(defvar pacmacs-levels ["map01" "map02" "map03"
- "map04" "map05" "map06"])
+(defvar pacmacs-levels nil)
(defvar pacmacs-current-level 0)
(defvar pacmacs-waiting-counter 0)
@@ -92,7 +90,9 @@
(setq pacmacs-lives 3)
(setq pacmacs-score 0)
+ (setq pacmacs-levels (pacmacs--get-list-of-levels))
(setq pacmacs-current-level 0)
+
(pacmacs--load-current-level)
(pacmacs--switch-to-play-state)
@@ -455,6 +455,13 @@
(when (equal pacmacs-game-state 'play)
(pacmacs--switch-direction pacmacs-player-state 'right)))
+(defun pacmacs--get-list-of-levels ()
+ (->> (directory-files "./maps/")
+ (-map #'pacmacs--levelname-from-filename)
+ (-remove #'null)
+ (-sort #'string-lessp)
+ (apply #'vector)))
+
(defun pacmacs-load-map (map-name)
(let* ((lines (split-string (pacmacs--file-content (format "maps/%s.txt"
map-name)) "\n" t))
(board-width (apply 'max (mapcar #'length lines)))