Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- class Label:
- def __init__(self, rect, rect_color, text, font_color, center=False):
- self.rect = pygame.Rect(rect)
- self.text = text
- self.rect_color = rect_color
- self.font_color = font_color
- self.center = center
- self.font = pygame.font.Font(None, self.rect.height - 4)
- self.rendered_text = None
- self.rendered_rect = None
- def render(self, surface):
- if self.rect_color != -1:
- surface.fill(self.rect_color, self.rect)
- self.rendered_text = self.font.render(self.text, 10, self.font_color)
- if self.center:
- self.rendered_rect = self.rendered_text.get_rect(center=self.rect.center)
- else:
- self.rendered_rect = self.rendered_text.get_rect(x=self.rect.x + 2, centery=self.rect.centery)
- surface.blit(self.rendered_text, self.rendered_rect)
- class TextBox(Label):
- def __init__(self, rect, rect_color, text, font_color):
- super().__init__(rect, rect_color, text, font_color)
- self.active = False
- self.done = False
- self.blink = False
- self.blink_timer = 0
- def get_event(self, event):
- if self.done:
- self.done = False
- self.text = ""
- if event.type == pygame.KEYDOWN and self.active:
- if event.key in (pygame.K_RETURN, pygame.K_KP_ENTER):
- self.active = False
- self.done = True
- elif event.key == pygame.K_BACKSPACE:
- if len(self.text) > 0:
- self.text = self.text[:-1]
- else:
- self.text += event.unicode
- if self.rendered_rect.width > self.rect.width:
- self.text = self.text[:-1]
- elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
- self.active = self.rect.collidepoint(*event.pos)
- def update(self):
- if pygame.time.get_ticks() - self.blink_timer > 200:
- self.blink = not self.blink
- self.blink_timer = pygame.time.get_ticks()
- def render(self, surface):
- super(TextBox, self).render(surface)
- if self.active and self.blink:
- pygame.draw.line(surface, [255 - self.font_color[c] for c in range(3)],
- (self.rendered_rect.right + 2, self.rendered_rect.top + 2),
- (self.rendered_rect.right + 2, self.rendered_rect.bottom - 2), 2)
Add Comment
Please, Sign In to add comment