2 # This just unifies some logic.
3 # There is no implied container / window system (yet)
5 import pygame.locals as pgl
7 from .loader import loader
8 from .constants import FONTS
13 def __init__(self, size, pos=None, padding=10):
15 self._padding = padding
23 def position(self, pos):
26 self._min_x = pos[0] - self._padding
27 self._max_x = pos[0] + self._size[0] + self._padding
28 self._min_y = pos[1] - self._padding
29 self._max_y = pos[1] + self._size[1] + self._padding
37 def render(self, surface):
40 def pressed(self, ev):
42 # Unplaced buttons can't be pressed
44 if ev.type == pgl.MOUSEBUTTONDOWN and ev.button == 1:
45 if self._min_x < ev.pos[0] < self._max_x:
46 if self._min_y < ev.pos[1] < self._max_y:
51 class TextButton(Button):
53 def __init__(self, text, colour, pos=None, padding=10):
54 font = loader.load_font(FONTS['sans'], size=24)
55 self._text = font.render(text, True, colour)
56 super(TextButton, self).__init__(self._text.get_size(), pos, padding)
58 def render(self, surface):
59 surface.blit(self._text, self._pos, None)