Mercurial > rinkhals
comparison gamelib/level.py @ 410:e83ec14163f2
Make level loading more robust
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 21 Nov 2009 11:04:16 +0000 |
parents | bb75979b58e6 |
children | 1e24eedbf40f |
comparison
equal
deleted
inserted
replaced
409:912b2a0ed014 | 410:e83ec14163f2 |
---|---|
1 # level.py | 1 # level.py |
2 | 2 |
3 import constants | 3 import constants |
4 import data | 4 import data |
5 import os | |
5 from animal import DEFAULT_FOX_WEIGHTINGS | 6 from animal import DEFAULT_FOX_WEIGHTINGS |
6 from ConfigParser import RawConfigParser | 7 from ConfigParser import RawConfigParser |
7 | 8 |
8 class Level(object): | 9 class Level(object): |
9 """Container for level details""" | 10 """Container for level details""" |
10 | 11 |
11 def __init__(self, level_name): | 12 def __init__(self, level_name): |
13 level_info = None | |
12 default_map = '%s.tga' % level_name | 14 default_map = '%s.tga' % level_name |
13 level_info = data.filepath('levels/%s.conf' % level_name) | 15 for poss_file in ['levels/%s.conf' % level_name, '%s.conf' % level_name, |
16 'levels/%s' % level_name, level_name]: | |
17 cand = data.filepath(poss_file) | |
18 if os.path.exists(cand): | |
19 level_info = cand | |
20 break | |
21 if not level_info: | |
22 raise RuntimeError('Unable to load %s' % level_name) | |
14 # Load the level info file | 23 # Load the level info file |
15 # setup defaults | 24 # setup defaults |
16 defaults = { | 25 defaults = { |
17 'map' : default_map, | 26 'map' : default_map, |
18 'level name' : level_name, | 27 'level name' : level_name, |