Mercurial > sypikslang
changeset 72:8b06b07a1477
Very basic mission support
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 09 May 2012 00:11:51 +0200 |
parents | 20b01d100ff5 |
children | b503ccb0a86e |
files | data/images/mission_selected.png gamelib/gamegui.py |
diffstat | 2 files changed, 76 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/gamegui.py Tue May 08 23:11:03 2012 +0200 +++ b/gamelib/gamegui.py Wed May 09 00:11:51 2012 +0200 @@ -7,7 +7,7 @@ from gamelib.data import filepath from gamelib.gui_base import Window, TextLabel, font_small, font_medium -from gamelib.gui import BigButton +from gamelib.gui import BigButton, ImageDrawable from gamelib.engine import PopWindow, AddWindow from gamelib.constants import WIDTH from gamelib.gamestate import Game @@ -88,6 +88,54 @@ self.parent.update_labels() +class MissionWidget(BigButton): + + WIDTH = 200 + + BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) + BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) + BG_IMAGE_SELECTED = image.load(filepath('images/mission_selected.png')) + + def __init__(self, mission, pos, parent): + self.mission = mission + self.parent = parent + super(MissionWidget, self).__init__(pos, '%s' % mission.NAME, + font_small) + selected = ImageDrawable((0, 0, self.WIDTH, self.HEIGHT), + self.BG_IMAGE_SELECTED) + self.add_state('SELECTED', selected) + self.mode = 'NORMAL' + self.equipment = [] + + def on_mouse_cancel(self, pos): + self.set_state(self.mode) + + def on_mouse_up(self, pos): + self.set_state(self.mode) + self.on_click() + + def on_click(self): + if self.mode == 'SELECTED': + # unselect mission + self.mode = 'NORMAL' + self.set_state('NORMAL') + else: + # select mission and equipment + self.mode = 'SELECTED' + self.set_state('SELECTED') + + def selected(self): + return self.mode == 'SELECTED' + + def get_equipment(self): + return self.equipment + + def reset(self): + self.equipment = [] + self.mode = 'NORMAL' + self.set_state('NORMAL') + + class ValueLabel(TextLabel): def __init__(self, pos, description): @@ -127,10 +175,20 @@ self.add_child(devbut) self.update_labels() + self._missions = [] self._make_widgets() def _make_widgets(self): - pass + x = 0 + y = 150 + for mission in self.game.get_available_missions(): + widget = MissionWidget(mission, (x, y), self) + self._missions.append(widget) + self.add_child(widget) + x += 200 + if x >= WIDTH: + x = 0 + y += 100 def end_turn(self): # Drop back to the research screen @@ -140,7 +198,10 @@ self.lab.end_turn() def update_widgets(self): - pass + for widget in self._missions: + self.remove_child(widget) + self._missions = [] + self._make_widgets() def update(self): self.update_labels() @@ -154,7 +215,18 @@ self.develop.reset() self.reset() + def get_mission_list(self): + selected_missions = [] + for widget in self._missions: + if widget.selected(): + equipment = widget.get_equipment() + mission = widget.mission + selected_missions.append((mission, equipment)) + return selected_missions + def reset(self): + for widget in self._missions: + widget.reset() self.update_labels() @@ -292,6 +364,7 @@ self._make_science_widgets() def end_turn(self): + self.game.cur_missions = self.activity.get_mission_list() self.game.end_turn() self.game.start_turn() self.update_labels()