From 607e097be91d3f709eafa672d90ad4bb8361096a Mon Sep 17 00:00:00 2001 From: Alan Aguiar Date: Thu, 22 Aug 2013 03:05:47 +0000 Subject: update MultiLabel now inherits from pygame sprite --- diff --git a/src/api/Label.py b/src/api/Label.py index 51998a5..e0158cb 100755 --- a/src/api/Label.py +++ b/src/api/Label.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import pygame +font_path = 'assets/fonts/' class CLabel(pygame.sprite.Sprite): """ a basic label @@ -13,12 +14,13 @@ class CLabel(pygame.sprite.Sprite): size: (width, height) of label """ - def __init__(self, fontName = "freesansbold.ttf"): + def __init__(self, fontName = "DejaVuSans.ttf", transparent=False): pygame.sprite.Sprite.__init__(self) - self.font = pygame.font.Font(fontName, 20) + self.font = pygame.font.Font(font_path + fontName, 20) self.text = "" self.fgColor = ((0x00, 0x00, 0x00)) self.bgColor = ((0xFF, 0xFF, 0xFF)) + self.transparent = transparent self.center = (0, 0) self.size = (0, 0) @@ -44,7 +46,11 @@ class CLabel(pygame.sprite.Sprite): def _update_image(self): self.image = pygame.Surface(self.size) self.image.fill(self.bgColor) - fontSurface = self.font.render(self.text, True, self.fgColor, self.bgColor) + if self.transparent: + self.image.set_colorkey(self.bgColor) + fontSurface = self.font.render(self.text, True, self.fgColor) + else: + fontSurface = self.font.render(self.text, True, self.fgColor, self.bgColor) #center the text xPos = (self.image.get_width() - fontSurface.get_width())/2 self.image.blit(fontSurface, (xPos, 0)) diff --git a/src/api/MultiLabel.py b/src/api/MultiLabel.py index 956adf3..95dd2a1 100755 --- a/src/api/MultiLabel.py +++ b/src/api/MultiLabel.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -from Sprite import CSprite import pygame +font_path = 'assets/fonts/' -class CMultiLabel(CSprite): +class CMultiLabel(pygame.sprite.Sprite): """ accepts a string separate with \n, creates a multi-line label to display text same properties as label except textLines @@ -13,32 +13,36 @@ class CMultiLabel(CSprite): least 30 pixels per line (with the default font) """ - def __init__(self, transparent=False): - CSprite.__init__(self) + def __init__(self, fontName = "DejaVuSans.ttf", transparent=False): + pygame.sprite.Sprite.__init__(self) + self.font = pygame.font.Font(font_path + fontName, 20) self.text = 'This\nis\nsample\ntext' - #self.font = pygame.font.Font("freesansbold.ttf", 20) - - self.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 20) self.fgColor = ((0x00, 0x00, 0x00)) self.bgColor = ((0xFF, 0xFF, 0xFF)) self.transparent = transparent self.center = (0, 0) - self.size = (300, 150) - self.createImage() + self.size = (0, 0) def set_center(self, aCenter): self.center = aCenter - self.createImage() def set_size(self, aSize): self.size = aSize - self.createImage() - + self._update_image() + + def set_fgColor(self, afgColor): + self.fgColor = afgColor + self._update_image() + + def set_bgColor(self, abgColor): + self.bgColor = abgColor + self._update_image() + def set_text(self, aText): self.text = aText - self.createImage() - - def createImage(self): + self._update_image() + + def _update_image(self): self.image = pygame.Surface(self.size) self.image.fill(self.bgColor) if self.transparent: @@ -61,7 +65,6 @@ class CMultiLabel(CSprite): self.rect = self.image.get_rect() self.rect.center = self.center - self.setImage(self.image) def update(self): self.rect = self.image.get_rect() diff --git a/src/game/Area1Game4.py b/src/game/Area1Game4.py index 1e37e09..1ea901e 100644 --- a/src/game/Area1Game4.py +++ b/src/game/Area1Game4.py @@ -86,7 +86,7 @@ class CArea1Game4(CGameState): self.mQuestionsL = range(6) random.shuffle(self.mQuestionsL) - self.mLabelQuestion = CMultiLabel(True) + self.mLabelQuestion = CMultiLabel(transparent=True) self.mLabelQuestion.set_center((600, 250)) self.mLabelQuestion.set_size((400, 100)) self.mLabelQuestion.set_text(self.mQuestions[self.mQuestionsL[self.mCurrentQuestion]][0]) -- cgit v0.9.1