From cd58e868d23203bea1562813a3ec208982100eaa Mon Sep 17 00:00:00 2001 From: Alan Aguiar Date: Thu, 22 Aug 2013 03:18:52 +0000 Subject: multi label now inherits from common CLabel --- diff --git a/src/api/Button.py b/src/api/Button.py index 13c4e9d..d3ab063 100755 --- a/src/api/Button.py +++ b/src/api/Button.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- import pygame -import api.Label from api.Label import CLabel from Mouse import * @@ -46,6 +45,3 @@ class CButton(CLabel): if self.rect.collidepoint(CMouse().getPos()): print("release in button") self.mclicked = True - - def destroy(self): - pass diff --git a/src/api/Label.py b/src/api/Label.py index e0158cb..117a213 100755 --- a/src/api/Label.py +++ b/src/api/Label.py @@ -59,3 +59,7 @@ class CLabel(pygame.sprite.Sprite): def update(self): self.rect = self.image.get_rect() self.rect.center = self.center + + def destroy(self): + self.font = None + self.image = None diff --git a/src/api/MultiLabel.py b/src/api/MultiLabel.py index 95dd2a1..962fb19 100755 --- a/src/api/MultiLabel.py +++ b/src/api/MultiLabel.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- import pygame +from api.Label import CLabel + font_path = 'assets/fonts/' -class CMultiLabel(pygame.sprite.Sprite): +class CMultiLabel(CLabel): """ accepts a string separate with \n, creates a multi-line label to display text same properties as label except textLines @@ -14,46 +16,18 @@ class CMultiLabel(pygame.sprite.Sprite): """ 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.fgColor = ((0x00, 0x00, 0x00)) - self.bgColor = ((0xFF, 0xFF, 0xFF)) - self.transparent = transparent - self.center = (0, 0) - self.size = (0, 0) - - def set_center(self, aCenter): - self.center = aCenter - - def set_size(self, aSize): - self.size = aSize - 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._update_image() - + CLabel.__init__(self, fontName, transparent) + def _update_image(self): self.image = pygame.Surface(self.size) self.image.fill(self.bgColor) if self.transparent: self.image.set_colorkey(self.bgColor) - - self.textLines = self.text.split('\n') - numLines = len(self.textLines) + textLines = self.text.split('\n') + numLines = len(textLines) vSize = self.image.get_height() / numLines - for lineNum in range(numLines): - currentLine = self.textLines[lineNum] + currentLine = textLines[lineNum] if self.transparent: fontSurface = self.font.render(currentLine, True, self.fgColor) else: @@ -62,10 +36,4 @@ class CMultiLabel(pygame.sprite.Sprite): xPos = (self.image.get_width() - fontSurface.get_width())/2 yPos = lineNum * vSize self.image.blit(fontSurface, (xPos, yPos)) - - self.rect = self.image.get_rect() - self.rect.center = self.center - - def update(self): - self.rect = self.image.get_rect() - self.rect.center = self.center + self.update() diff --git a/src/api/Sprite.py b/src/api/Sprite.py index c4563d9..881ecdd 100755 --- a/src/api/Sprite.py +++ b/src/api/Sprite.py @@ -15,6 +15,7 @@ from Mouse import * # TODO: This class is a rotating sprite. update() in each frame rotates the sprite # image, so this is inneficient for sprites that does not rotate continuoulsy. + class CSprite(pygame.sprite.Sprite): # TODO: Como defino aca los vectores ? -- cgit v0.9.1