diff --git a/project/data/font/MilkyNice.otf b/project/data/font/MilkyNice.otf deleted file mode 100644 index a781d36..0000000 Binary files a/project/data/font/MilkyNice.otf and /dev/null differ diff --git a/project/main.py b/project/main.py index 2fa252b..ea3cf10 100644 --- a/project/main.py +++ b/project/main.py @@ -12,7 +12,7 @@ from sprite.Sprite import Sprite from sprite.StaticSprite import StaticSprite from ui_elements.TextLabel import TextLabel -what_to_run = 'physics' +what_to_run = 'textlabel' def apply_frame_rate(number: float): @@ -84,11 +84,13 @@ elif what_to_run == 'textlabel': screen_transform = PositionScale((0, 0), (4, 4)) pygame.init() - screen = pygame.display.set_mode((300, 300)) + screen = pygame.display.set_mode((800, 800)) pygame.display.set_caption("PM GAME") clock = pygame.time.Clock() - test = TextLabel("Das ist ein Text", 100, 100, 50, Font('data/font/MilkyNice.otf', 50)) + test1 = TextLabel("Das ist ein Test", 400, 0, 50, alignment="left") + test2 = TextLabel("Das ist ein Test", 400, 10, 50, alignment="center") + test3 = TextLabel("Das ist ein Test", 400, 20, 50, alignment="right") while True: clock.tick(5) @@ -97,9 +99,12 @@ elif what_to_run == 'textlabel': if event.type == pygame.QUIT: pygame.quit() - screen.fill((0, 0, 0)) + screen.fill((0, 0, 110)) + + test1.draw(screen, screen_transform) + test2.draw(screen, screen_transform) + test3.draw(screen, screen_transform) - test.draw(screen, screen_transform) pygame.display.update() diff --git a/project/ui_elements/TextLabel.py b/project/ui_elements/TextLabel.py index 98b90e4..6fed68f 100644 --- a/project/ui_elements/TextLabel.py +++ b/project/ui_elements/TextLabel.py @@ -1,12 +1,12 @@ import pygame -from pygame import Surface +from pygame import Surface, Rect from pygame.font import Font from sprite.PositionScale import PositionScale class TextLabel: - def __init__(self, text: str, x_position: float, y_position: float, font_size: float, font: Font, + def __init__(self, text: str, x_position: float, y_position: float, font_size: int, alignment: str = "left"): self.text = text self.x_position = x_position @@ -15,20 +15,33 @@ class TextLabel: self.current_width = 0 self.current_height = 0 self.font_size = font_size - self.font = font + self.font = Font('data/font/MilkyNice.ttf', self.font_size) self.position_scale = PositionScale() def draw(self, screen: Surface, screen_transform: PositionScale): - rendered_font = self.font.render(str(self.text), True, (255, 255, 255)) + rendered_font = self.font.render(str(self.text), True, pygame.Color('white')) + self.current_width = rendered_font.get_width() self.current_height = rendered_font.get_height() if self.alignment == "right": - screen.blit(rendered_font, (self.x_position - self.current_width / 2, self.y_position)) - elif self.alignment == "right": + screen.blit(rendered_font, (self.x_position - self.current_width, self.y_position)) + elif self.alignment == "left": screen.blit(rendered_font, (self.x_position, self.y_position)) elif self.alignment == "center": - screen.blit(rendered_font, (self.x_position - self.current_width, self.y_position)) + screen.blit(rendered_font, (self.x_position - self.current_width / 2, self.y_position)) - def set_text(self, new_text: str): - self.text = new_text + target_scale = (screen_transform.scale[0] * self.position_scale.scale[0], + screen_transform.scale[1] * self.position_scale.scale[1]) + + target_position = ((self.position_scale.position[0] + screen_transform.position[0]) * target_scale[0], + (self.position_scale.position[1] + screen_transform.position[1]) * target_scale[1]) + + target_size = (int(target_scale[0] * self.x_position), + int(target_scale[1] * self.y_position)) + + target_image = pygame.transform.scale(rendered_font, target_size) + + +def set_text(self, new_text: str): + self.text = new_text