Mercurial > mamba
comparison mamba/gamestate.py @ 399:12d67f69e6b2
Support for user levels.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 11:28:18 +0200 |
parents | d4062344d8f4 |
children | 001c3797a63b |
comparison
equal
deleted
inserted
replaced
398:11ee864cd3e3 | 399:12d67f69e6b2 |
---|---|
11 | 11 |
12 levels = [] | 12 levels = [] |
13 done_levels = set() | 13 done_levels = set() |
14 | 14 |
15 | 15 |
16 def save_path(path): | |
17 return os.path.join(options.save_location, *path.split('/')) | |
18 | |
19 | |
16 def level_done(level_name): | 20 def level_done(level_name): |
17 done_levels.add(level_name) | 21 done_levels.add(level_name) |
18 save_state() | 22 save_state() |
19 | 23 |
20 | 24 |
21 def load_state(): | 25 def load_state(): |
22 done_levels.clear() | 26 done_levels.clear() |
23 fn = os.path.join(options.save_location, 'gamestate.json') | 27 fn = save_path('gamestate.json') |
24 if os.access(fn, os.R_OK): | 28 if os.access(fn, os.R_OK): |
25 f = open(fn, 'r') | 29 f = open(fn, 'r') |
26 state = json.load(f) | 30 state = json.load(f) |
27 f.close() | 31 f.close() |
28 done_levels.update(state['done_levels']) | 32 done_levels.update(state['done_levels']) |
29 | 33 |
30 | 34 |
31 def save_state(): | 35 def save_state(): |
32 fn = os.path.join(options.save_location, 'gamestate.json') | 36 fn = save_path('gamestate.json') |
33 if not os.path.isdir(options.save_location): | 37 if not os.path.isdir(options.save_location): |
34 os.makedirs(options.save_location) | 38 os.makedirs(options.save_location) |
35 f = open(fn, 'w') | 39 f = open(fn, 'w') |
36 json.dump({ | 40 json.dump({ |
37 'done_levels': list(done_levels), | 41 'done_levels': list(done_levels), |
38 }, f) | 42 }, f) |
39 f.close() | 43 f.close() |
40 | 44 |
41 | 45 |
46 def get_user_levels_dir(): | |
47 levels_dir = save_path('user_levels') | |
48 if not os.path.isdir(levels_dir): | |
49 os.makedirs(levels_dir) | |
50 return levels_dir | |
51 | |
52 | |
42 def load_levels(): | 53 def load_levels(): |
43 f = open(filepath('levels/index.txt')) | 54 f = open(filepath('levels/index.txt')) |
44 del levels[:] | 55 del levels[:] |
45 for line in f.readlines(): | 56 for line in f.readlines(): |
46 line = line.strip() | 57 line = line.strip() |