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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
1 import os
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
2
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3 try:
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
4 import json
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5 except ImportError:
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
6 import simplejson as json # pyflakes:ignore
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
7
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
8 from mamba.options import options
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
9
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
11 levels = []
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
12 done_levels = set()
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
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
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
24 def load_state():
355
7d5bf8e72c61 Restore --level.
Simon Cross <hodgestar@gmail.com>
parents: 310
diff changeset
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
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
27 if os.access(fn, os.R_OK):
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
28 f = open(fn, 'r')
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
29 state = json.load(f)
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
30 f.close()
355
7d5bf8e72c61 Restore --level.
Simon Cross <hodgestar@gmail.com>
parents: 310
diff changeset
31 done_levels.update(state['done_levels'])
167
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
32
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
33
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
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
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
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
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
38 f = open(fn, 'w')
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
39 json.dump({
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
40 'done_levels': list(done_levels),
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
41 }, f)
ce30befccc94 Missing files
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
42 f.close()