Mercurial > scrounge
changeset 27:69254db89020
missing effects file
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Mon, 22 Aug 2011 22:00:09 +0200 |
| parents | 59b340afd783 |
| children | 0532cbb323bf |
| files | effect.py |
| diffstat | 1 files changed, 61 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/effect.py Mon Aug 22 22:00:09 2011 +0200 @@ -0,0 +1,61 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import pygame + +def outlined_text(font, text, color, border_color): + notcolor = [c^0xFF for c in border_color] + base = font.render(text, 0, border_color, notcolor) + size = base.get_width() + 2, base.get_height() + 2 + image = pygame.Surface(size, 16) + image.fill(notcolor) + base.set_colorkey(0) + image.blit(base, (0, 0)) + image.blit(base, (2, 0)) + image.blit(base, (0, 2)) + image.blit(base, (2, 2)) + base.set_colorkey(0) + base.set_palette_at(1, color) + image.blit(base, (1, 1)) + image.set_colorkey(notcolor) + return image + +class CaptionSprite(pygame.sprite.Sprite): + def __init__(self, x, y, text, color, delay): + super(CaptionSprite, self).__init__() + font = pygame.font.Font(None, 18) + self.text = text + self.color = color + bgcolor = (32, 32, 32) + self.image = outlined_text(font, text, color, bgcolor) + self.rect = self.image.get_rect() + self.x = x + self.y = y + self.rect.center = (x * 24 + 12, y * 16 + 8 - 24) + self.ttl = 16 + self.delay = delay + + def update(self): + if self.delay: + self.delay -= 1 + self.image.set_alpha(max(0, 255 - self.delay * 24)) + return + self.rect.move_ip(0, -2) + self.ttl -= 1 + if self.ttl < 5: + self.image.set_alpha(self.ttl * 51) + if self.ttl <= 0: + self.kill() + +class Caption(object): + def __init__(self, x, y, text, color=(255, 255, 255)): + self.x = x + self.y = y + self.text = text + self.color = color + + def render(self, to_display, delay=0): + self.sprite = CaptionSprite(self.x, self.y, self.text, + self.color, delay) + to_display.effects.add(self.sprite) +
