[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 8e984d8: Save sokoban-level when a level is completed, re
From: |
Dieter Deyke |
Subject: |
[elpa] master 8e984d8: Save sokoban-level when a level is completed, restore sokoban-level when game is started |
Date: |
Sat, 8 Jul 2017 06:46:22 -0400 (EDT) |
branch: master
commit 8e984d881e0cb67a1fca8f51610597558f08866c
Author: Dieter Deyke <address@hidden>
Commit: Dieter Deyke <address@hidden>
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 <address@hidden>
+;; Maintainer: Dieter Deyke <address@hidden>
;; 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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] master 8e984d8: Save sokoban-level when a level is completed, restore sokoban-level when game is started,
Dieter Deyke <=