Mercurial > sypikslang
view gamelib/gamegui.py @ 63:364ff3479ef2
Remove duplicate point tracking. Rename classes for future refactoring
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Tue, 08 May 2012 20:51:53 +0200 |
parents | 38f41d046c6f |
children | 5c4c67673112 |
line wrap: on
line source
# -*- coding: utf-8 -*- # vim:fileencoding=utf-8 ai ts=4 sts=4 et sw=4 """Gui for the actual game""" from pygame import image from gamelib.data import filepath from gamelib.gui_base import Window, font_small from gamelib.gui import BigButton from gamelib.engine import PopWindow from gamelib.constants import WIDTH from gamelib.gamestate import Game class ExitGameButton(BigButton): def __init__(self): super(ExitGameButton, self).__init__(((WIDTH - 128), 10), 'Exit') def on_click(self): PopWindow.post() class EndTurnButton(BigButton): def __init__(self, parent): super(EndTurnButton, self).__init__(((WIDTH - 256), 10), 'End Turn') self.parent = parent def on_click(self): self.parent.end_turn() class ResetButton(BigButton): def __init__(self, parent): super(ResetButton, self).__init__((10, 10), 'Reset points') self.parent = parent def on_click(self): self.parent.reset() class ScienceWidget(BigButton): WIDTH = 200 BG_IMAGE_NORMAL = image.load(filepath('images/science_normal.png')) BG_IMAGE_DOWN = image.load(filepath('images/science_down.png')) def __init__(self, science, pos, parent): self.science = science self.points = 0 self.parent = parent super(ScienceWidget, self).__init__(pos, '%s: %d' % (science.NAME, science.points), font_small) def on_click(self): if (self.parent.game.get_available_points() > 0 and self.science.can_spend(self.parent.game.lab, self.points + 1)): self.points += 1 self.text = '%s: %d + %d' % (self.science.NAME, self.science.points, self.points) self._draw_text() self.parent.game.cur_allocation.append(self.science) def reset(self): while self.points > 0: self.parent.game.cur_allocation.remove(self.science) self.points -= 1 self.text = '%s: %d' % (self.science.NAME, self.science.points) self._draw_text() class LabWindow(Window): """Window for the research lab""" def __init__(self, screen): super(LabWindow, self).__init__(screen) self.game = Game() exit = ExitGameButton() self.add_child(exit) end_turn = EndTurnButton(self) self.add_child(end_turn) reset = ResetButton(self) self.add_child(reset) self.game.start_turn() self._sciences = [] self._make_science_widgets() def _make_science_widgets(self): x = 0 y = 150 for science in self.game.lab.science: widget = ScienceWidget(science, (x, y), self) self.add_child(widget) self._sciences.append(widget) x += 200 if x >= WIDTH: x = 0 y += 100 def end_turn(self): self.game.end_turn() # FIXME: Horrible hackery for widget in self._sciences: self.remove_child(widget) self._sciences = [] self._make_science_widgets() self.game.start_turn() def reset(self): for widget in self._sciences: widget.reset()