Mercurial > mamba
annotate mamba/gamestate.py @ 559:4c30776673c6
Don't use 'is' to compare ints -- it's dangerous.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 08 Oct 2011 20:24:03 +0200 |
parents | 001c3797a63b |
children | 84616c7db2e7 |
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.options import options | |
9 | |
10 | |
11 levels = [] | |
12 done_levels = set() | |
13 | |
14 | |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
15 def save_path(path): |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
16 return os.path.join(options.save_location, *path.split('/')) |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
17 |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
18 |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
19 def level_done(level_name): |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
20 done_levels.add(level_name) |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
21 save_state() |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
22 |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
23 |
167 | 24 def load_state(): |
355 | 25 done_levels.clear() |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
26 fn = save_path('gamestate.json') |
167 | 27 if os.access(fn, os.R_OK): |
28 f = open(fn, 'r') | |
29 state = json.load(f) | |
30 f.close() | |
355 | 31 done_levels.update(state['done_levels']) |
167 | 32 |
33 | |
34 def save_state(): | |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
35 fn = save_path('gamestate.json') |
167 | 36 if not os.path.isdir(options.save_location): |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
37 os.makedirs(options.save_location) |
167 | 38 f = open(fn, 'w') |
39 json.dump({ | |
40 'done_levels': list(done_levels), | |
41 }, f) | |
42 f.close() |