Mercurial > mamba
annotate mamba/gamestate.py @ 267:1e8dca95c48a
Hook up hot-keys in editor for jerith
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 15 Sep 2011 12:54:16 +0200 |
parents | 321f2eef40e3 |
children | b371c2ea309e |
rev | line source |
---|---|
167 | 1 import os |
2 | |
3 try: | |
4 import json | |
5 except ImportError: | |
6 import simplejson as json # pyflakes:ignore | |
7 | |
8 from mamba.data import filepath | |
9 from mamba.options import options | |
10 | |
11 | |
12 levels = [] | |
13 unlocked_levels = set() | |
14 done_levels = set() | |
15 | |
16 | |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
17 def level_done(level_name): |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
18 assert level_name in levels |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
19 done_levels.add(level_name) |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
20 save_state() |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
21 |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
22 |
167 | 23 def load_state(): |
24 global unlocked_levels, done_levels | |
25 fn = os.path.join(options.save_location, 'gamestate.json') | |
26 if os.access(fn, os.R_OK): | |
27 f = open(fn, 'r') | |
28 state = json.load(f) | |
29 f.close() | |
30 unlocked_levels = set(state['unlocked_levels']) | |
31 done_levels = set(state['done_levels']) | |
32 else: | |
33 unlocked_levels = set((0,)) | |
34 | |
35 | |
36 def save_state(): | |
37 fn = os.path.join(options.save_location, 'gamestate.json') | |
38 if not os.path.isdir(options.save_location): | |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
39 os.makedirs(options.save_location) |
167 | 40 f = open(fn, 'w') |
41 json.dump({ | |
42 'unlocked_levels': list(unlocked_levels), | |
43 'done_levels': list(done_levels), | |
44 }, f) | |
45 f.close() | |
46 | |
47 | |
48 def load_levels(): | |
49 global levels | |
50 f = open(filepath('levels/index.txt')) | |
51 levels = [] | |
52 for line in f.readlines(): | |
53 line = line.strip() | |
54 if line and line[0] != '#': | |
55 levels.append(line) |