branch: master commit 8e984d881e0cb67a1fca8f51610597558f08866c Author: Dieter Deyke <dieter.de...@gmail.com> Commit: Dieter Deyke <dieter.de...@gmail.com>
Save sokoban-level when a level is completed, restore sokoban-level when game is started --- packages/sokoban/sokoban.el | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/sokoban/sokoban.el b/packages/sokoban/sokoban.el index 1601e9b..9eedff1 100644 --- a/packages/sokoban/sokoban.el +++ b/packages/sokoban/sokoban.el @@ -3,6 +3,7 @@ ;; Copyright (C) 1998, 2013, 2017 Free Software Foundation, Inc. ;; Author: Glynn Clements <glynn.cleme...@xemacs.org> +;; Maintainer: Dieter Deyke <dieter.de...@gmail.com> ;; Version: 1.4 ;; Created: 1997-09-11 ;; Keywords: games @@ -41,6 +42,8 @@ ;; Modified: 1998-06-04, added `undo' feature ;; added number of blocks done/total to score and modeline ;; Modified: 2003-06-14, update email address, remove URL +;; Modified: 2017-05-27, save sokoban-level when a level is completed, +;; restore sokoban-level when game is started ;; Tested with XEmacs 20.3/4/5 and Emacs 19.34 @@ -94,6 +97,8 @@ (defvar sokoban-level-data nil) +(defconst sokoban-state-filename (locate-user-emacs-file "sokoban-state")) + ;; ;;;;;;;;;;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconst sokoban-floor-xpm "\ @@ -613,6 +618,9 @@ static char * player_xpm[] = { (incf sokoban-done)) (sokoban-add-push dx dy) (cond ((= sokoban-done sokoban-targets) + (let ((level sokoban-level)) + (with-temp-file sokoban-state-filename + (print level (current-buffer)))) (sit-for 3) (sokoban-next-level)))))))))) @@ -771,7 +779,14 @@ sokoban-mode keybindings: (switch-to-buffer sokoban-buffer-name) (gamegrid-kill-timer) (sokoban-mode) - (sokoban-start-game)) + (setq sokoban-level 0) + (if (file-exists-p sokoban-state-filename) + (setq sokoban-level + (with-temp-buffer + (insert-file-contents sokoban-state-filename) + (goto-char (point-min)) + (read (current-buffer))))) + (sokoban-next-level)) ;;;###autoload (unless (featurep 'xemacs)