comparison gamelib/gamegui.py @ 124:685301e35f88

Add a minion cost to missions
author Neil Muller <drnlmuller@gmail.com>
date Thu, 10 May 2012 12:16:15 +0200
parents acf3af761bbc
children c224057befff
comparison
equal deleted inserted replaced
123:7cd716328a44 124:685301e35f88
128 BG_IMAGE_SELECTED = image.load(filepath('images/mission_selected.png')) 128 BG_IMAGE_SELECTED = image.load(filepath('images/mission_selected.png'))
129 129
130 def __init__(self, mission, pos, parent): 130 def __init__(self, mission, pos, parent):
131 self.mission = mission 131 self.mission = mission
132 self.parent = parent 132 self.parent = parent
133 self.game = self.parent.game
134 self.minions = 0
133 super(MissionWidget, self).__init__(pos, '%s' % mission.NAME, 135 super(MissionWidget, self).__init__(pos, '%s' % mission.NAME,
134 font_small) 136 font_small)
135 selected = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT), 137 selected = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT),
136 self.BG_IMAGE_SELECTED) 138 self.BG_IMAGE_SELECTED)
137 self.add_state('SELECTED', selected) 139 self.add_state('SELECTED', selected)
147 149
148 def on_click(self): 150 def on_click(self):
149 if self.mode == 'SELECTED': 151 if self.mode == 'SELECTED':
150 # unselect mission 152 # unselect mission
151 self.reset() 153 self.reset()
152 else: 154 elif self.mission.can_attempt(self.game):
153 # select mission and equipment 155 # select mission and equipment
154 self.mode = 'SELECTED' 156 self.mode = 'SELECTED'
155 self.set_state('SELECTED') 157 self.set_state('SELECTED')
158 self.minions = self.mission.MINIONS_REQUIRED
159 self.game.minions -= self.minions
160 self.parent.update_labels()
156 equip = EquipWindow(self.parent.screen, self.mission, 161 equip = EquipWindow(self.parent.screen, self.mission,
157 self.parent.game, self) 162 self.game, self)
158 AddWindow.post(equip) 163 AddWindow.post(equip)
159 164
160 def selected(self): 165 def selected(self):
161 return self.mode == 'SELECTED' 166 return self.mode == 'SELECTED'
162 167
164 return self.equipment 169 return self.equipment
165 170
166 def reset(self): 171 def reset(self):
167 for equip in self.equipment: 172 for equip in self.equipment:
168 # Release funds 173 # Release funds
169 self.parent.game.money += equip.COST 174 self.game.money += equip.COST
175 self.game.minions += self.minions
176 self.minions = 0
170 self.parent.update() 177 self.parent.update()
171 self.equipment = [] 178 self.equipment = []
172 self.mode = 'NORMAL' 179 self.mode = 'NORMAL'
173 self.set_state('NORMAL') 180 self.set_state('NORMAL')
174 181
346 reset = ResetButton(self) 353 reset = ResetButton(self)
347 self.add_child(reset) 354 self.add_child(reset)
348 355
349 self.points = ValueLabel((10, 75), 'Available Human Resources') 356 self.points = ValueLabel((10, 75), 'Available Human Resources')
350 self.add_child(self.points) 357 self.add_child(self.points)
351 self.money = ValueLabel((310, 75), 'Money') 358 self.minions = ValueLabel((310, 75), 'Minions available: ')
359 self.add_child(self.minions)
360 self.money = ValueLabel((510, 75), 'Money')
352 self.add_child(self.money) 361 self.add_child(self.money)
353 362
354 self.milestone = ValueLabel((10, 95), 'Currently taken over') 363 self.milestone = ValueLabel((10, 95), 'Currently taken over')
355 self.add_child(self.milestone) 364 self.add_child(self.milestone)
356 self.reputation = ValueLabel((310, 95), 'Reputation') 365 self.reputation = ValueLabel((310, 95), 'Reputation')
357 self.add_child(self.reputation) 366 self.add_child(self.reputation)
358 367
359 def update_labels(self): 368 def update_labels(self):
360 self.points.set_value(self.game.get_available_points()) 369 self.points.set_value(self.game.get_available_points())
361 self.money.set_value(self.game.money) 370 self.money.set_value(self.game.money)
371 self.minions.set_value(self.game.minions)
362 self.milestone.set_value(self.game.milestone) 372 self.milestone.set_value(self.game.milestone)
363 self.reputation.set_value(_lookup_reputation(self.game.reputation)) 373 self.reputation.set_value(_lookup_reputation(self.game.reputation))
364 374
365 375
366 class ActivityWindow(GameStateWindow): 376 class ActivityWindow(GameStateWindow):