Mercurial > mamba
annotate mamba/gamestate.py @ 572:84616c7db2e7
ensure save dir exists before trying to save
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Tue, 20 Nov 2012 23:37:46 +0200 |
parents | 001c3797a63b |
children |
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 |
572
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
19 def ensure_save_path_exists(path): |
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
20 location = save_path(path) |
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
21 if not os.path.isdir(location): |
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
22 os.makedirs(location) |
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
23 |
84616c7db2e7
ensure save dir exists before trying to save
Neil Muller <drnlmuller@gmail.com>
parents:
402
diff
changeset
|
24 |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
25 def level_done(level_name): |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
26 done_levels.add(level_name) |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
27 save_state() |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
28 |
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
29 |
167 | 30 def load_state(): |
355 | 31 done_levels.clear() |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
32 fn = save_path('gamestate.json') |
167 | 33 if os.access(fn, os.R_OK): |
34 f = open(fn, 'r') | |
35 state = json.load(f) | |
36 f.close() | |
355 | 37 done_levels.update(state['done_levels']) |
167 | 38 |
39 | |
40 def save_state(): | |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
41 fn = save_path('gamestate.json') |
167 | 42 if not os.path.isdir(options.save_location): |
222
321f2eef40e3
Save game when level completed.
Simon Cross <hodgestar@gmail.com>
parents:
167
diff
changeset
|
43 os.makedirs(options.save_location) |
167 | 44 f = open(fn, 'w') |
45 json.dump({ | |
46 'done_levels': list(done_levels), | |
47 }, f) | |
48 f.close() |