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()