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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)))