Mercurial > nagslang
changeset 196:40f618978c00
Overlays that don't suck as much
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 03 Sep 2013 22:24:38 +0200 |
parents | b8701c0bb184 |
children | 34c11bb5c96e f89576cec59a |
files | nagslang/game_object.py nagslang/widgets/text.py |
diffstat | 2 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/game_object.py Tue Sep 03 22:10:38 2013 +0200 +++ b/nagslang/game_object.py Tue Sep 03 22:24:38 2013 +0200 @@ -10,7 +10,7 @@ from nagslang.options import options from nagslang.resources import resources from nagslang.events import DoorEvent -from nagslang.widgets.text import TextWidget +from nagslang.widgets.text import LabelWidget class PuzzleGlue(object): @@ -335,7 +335,7 @@ class TextOverlay(Overlay): def __init__(self, text): self.text = text - self.widget = TextWidget((20, 20), self.text) + self.widget = LabelWidget((20, 20), self.text) def render(self, surface): self.widget.draw(surface)
--- a/nagslang/widgets/text.py Tue Sep 03 22:10:38 2013 +0200 +++ b/nagslang/widgets/text.py Tue Sep 03 22:24:38 2013 +0200 @@ -1,3 +1,5 @@ +import pygame + from nagslang.constants import FONT, FONT_SIZE from nagslang.widgets.base import Widget from nagslang.utils import convert_colour @@ -27,3 +29,28 @@ if self.visible: self.do_prepare() surface.blit(self.surface, self.rect) + + +class LabelWidget(TextWidget): + def __init__(self, *args, **kwargs): + self.padding = kwargs.pop('padding', 5) + self.border = kwargs.pop('border', 2) + self.bg_colour = convert_colour(kwargs.pop('bg_colour', + (255, 255, 255, 150))) + self.border_colour = convert_colour(kwargs.pop('border_colour', + (0, 0, 0))) + super(LabelWidget, self).__init__(*args, **kwargs) + + def prepare(self): + super(LabelWidget, self).prepare() + if not self.size: + self.rect.width += 2 * self.padding + self.rect.height += 2 * self.padding + surface = pygame.Surface(self.rect.size) + surface = surface.convert_alpha() + surface.fill(self.bg_colour) + surface.blit(self.surface, self.surface.get_rect().move( + (self.padding, self.padding))) + pygame.draw.rect(surface, self.border_colour, surface.get_rect(), + self.border) + self.surface = surface