From: Neil Date: Thu, 8 Sep 2016 12:02:22 +0000 (+0200) Subject: Add image button X-Git-Tag: tabakrolletjie-v1.0.0~185 X-Git-Url: https://git.ctpug.org.za/?p=tabakrolletjie.git;a=commitdiff_plain;h=17576103ca351f86ec6633ac7f3ec50bb8532852 Add image button --- diff --git a/tabakrolletjie/scenes/day.py b/tabakrolletjie/scenes/day.py index 87193e8..184c301 100644 --- a/tabakrolletjie/scenes/day.py +++ b/tabakrolletjie/scenes/day.py @@ -11,12 +11,19 @@ from ..obstacles import ObstacleManager from ..events import SceneChangeEvent from ..utils import debug_timer +from ..constants import SCREEN_SIZE +from ..widgets import ImageButton + class DayScene(BaseScene): def enter(self, gamestate): self._space = pymunk.Space() self._obstacles = ObstacleManager(self._space, gamestate) self._lights = LightManager(self._space, gamestate) + # Toolbar + self._tools = [ + ImageButton('32', 'seed.png', pos=(50, SCREEN_SIZE[1] - 40)), + ] @debug_timer("day.render") def render(self, surface, gamestate): @@ -24,6 +31,8 @@ class DayScene(BaseScene): self._lights.render_light(surface) self._obstacles.render(surface) self._lights.render_fittings(surface) + for tool in self._tools: + tool.render(surface) def event(self, ev, gamestate): if ev.type == pgl.KEYDOWN: @@ -32,6 +41,12 @@ class DayScene(BaseScene): SceneChangeEvent.post(scene=MenuScene()) elif ev.type == pgl.MOUSEBUTTONDOWN: if ev.button == 1: + # Check tools + for tool in self._tools: + if tool.pressed(ev): + print 'tool' + return + # Not tool, so check lights self._lights.toggle_nearest(ev.pos, surfpos=True) print self._lights.lit_by(ev.pos, surfpos=True) diff --git a/tabakrolletjie/widgets.py b/tabakrolletjie/widgets.py index ff854de..3f37b52 100644 --- a/tabakrolletjie/widgets.py +++ b/tabakrolletjie/widgets.py @@ -57,3 +57,15 @@ class TextButton(Button): def render(self, surface): surface.blit(self._text, self._pos, None) + + +class ImageButton(Button): + + def __init__(self, *imgparts, **kwargs): + self._img = loader.load_image(*imgparts) + pos = kwargs.get('pos') + padding = kwargs.get('padding', 0) + super(ImageButton, self).__init__(self._img.get_size(), pos, padding) + + def render(self, surface): + surface.blit(self._img, self._pos, None)