Mercurial > rinkhals
annotate gamelib/level.py @ 389:463802281182
Add basic level support (level choosing needs work)
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 29 Oct 2009 20:55:37 +0000 |
parents | |
children | bb75979b58e6 |
rev | line source |
---|---|
389
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
1 # level.py |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
2 |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
3 import constants |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
4 import data |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
5 from animal import DEFAULT_FOX_WEIGHTINGS |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
6 from ConfigParser import RawConfigParser |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
7 |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
8 class Level(object): |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
9 """Container for level details""" |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
10 |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
11 def __init__(self, level_name): |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
12 default_map = '%s.tga' % level_name |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
13 level_info = data.filepath('levels/%s.conf' % level_name) |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
14 # Load the level info file |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
15 # setup defaults |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
16 defaults = { |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
17 'map' : default_map, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
18 'level name' : level_name, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
19 'sell price chicken' : constants.DEFAULT_SELL_PRICE_CHICKEN, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
20 'sell price egg' : constants.DEFAULT_SELL_PRICE_EGG, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
21 'sell price dead fox' : constants.DEFAULT_SELL_PRICE_DEAD_FOX, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
22 'turn limit' : constants.DEFAULT_TURN_LIMIT, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
23 'goal' : constants.DEFAULT_GOAL_DESC, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
24 'max foxes' : constants.DEFAULT_MAX_FOXES, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
25 'min foxes' : 0, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
26 'starting cash' : constants.DEFAULT_STARTING_CASH, |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
27 } |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
28 # Add default fox weightings |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
29 for animal, prob in DEFAULT_FOX_WEIGHTINGS: |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
30 defaults[animal.CONFIG_NAME] = prob |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
31 config = RawConfigParser(defaults) |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
32 config.read(level_info) |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
33 # NB. This assumes the level file is correctly formatted. No provision |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
34 # is made for missing sections or incorrectly specified values. |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
35 # i.e. Things may blow up |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
36 map_file = config.get('Level', 'map') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
37 self.map = data.filepath('levels/%s' % map_file) |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
38 self.level_name = config.get('Level', 'level name') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
39 self.goal = config.get('Level', 'goal') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
40 self.turn_limit = config.getint('Level', 'turn limit') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
41 self.max_foxes = config.getint('Game values', 'max foxes') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
42 self.min_foxes = config.getint('Game values', 'min foxes') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
43 self.sell_price_chicken = config.getint('Game values', 'sell price chicken') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
44 self.sell_price_egg = config.getint('Game values', 'sell price egg') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
45 self.sell_price_dead_fox = config.getint('Game values', |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
46 'sell price dead fox') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
47 self.starting_cash = config.getint('Game values', 'starting cash') |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
48 self.fox_weightings = [] |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
49 for animal, _prob in DEFAULT_FOX_WEIGHTINGS: |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
50 self.fox_weightings.append((animal, config.getint('Fox probablities', |
463802281182
Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents:
diff
changeset
|
51 animal.CONFIG_NAME))) |