# HG changeset patch # User Stefano Rivera # Date 1378239878 -7200 # Node ID 40f618978c00e7e6b380ef08ef98cfd05af41830 # Parent b8701c0bb184e67b5f6c52b4a1d98d18e20ce71a Overlays that don't suck as much diff -r b8701c0bb184 -r 40f618978c00 nagslang/game_object.py --- 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) diff -r b8701c0bb184 -r 40f618978c00 nagslang/widgets/text.py --- 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