diff --git a/assets/fonts/Metropolis-Regular.ttf b/assets/fonts/Metropolis-Regular.ttf new file mode 100644 index 0000000..72cef2e Binary files /dev/null and b/assets/fonts/Metropolis-Regular.ttf differ diff --git a/main.py b/main.py index 71c3949..93a1466 100644 --- a/main.py +++ b/main.py @@ -21,8 +21,8 @@ def main(): "show_names": True }, "styling": { - "font": pygame.font.Font(None, 36), - "small_font": pygame.font.Font(None, 15), + "font": pygame.font.Font("assets/fonts/Metropolis-Regular.ttf", 36), + "small_font": pygame.font.Font("assets/fonts/Metropolis-Regular.ttf", 15), "button_colour": (200, 200, 200), "pressed_button_colour": (150, 150, 150), "text_colour": (255, 255, 255), diff --git a/render/settings_menu_renderer.py b/render/settings_menu_renderer.py index 318d6a3..bc04d01 100644 --- a/render/settings_menu_renderer.py +++ b/render/settings_menu_renderer.py @@ -19,6 +19,7 @@ class SettingsMenuRenderer: # Buttons self.back_button = Button(10, 10, 50, 50, None) self.back_button.set_colour(self.styling["button_colour"]) + self.back_button.set_font(self.styling["font"]) self.back_button.set_pressed_colour(self.styling["pressed_button_colour"]) self.back_button.set_image("assets/arrow.png") diff --git a/states/start_menu.py b/states/start_menu.py index 8e9145a..fc9ccef 100644 --- a/states/start_menu.py +++ b/states/start_menu.py @@ -27,6 +27,7 @@ class StartMenu(GameState): 50, self._get_demo) self.upload_demo_button.set_text("Upload Demo") + self.upload_demo_button.set_font(self.styling["font"]) self.upload_demo_button.set_font_size(40) self.upload_demo_button.set_colour(self.styling["button_colour"]) self.upload_demo_button.set_pressed_colour(self.styling["pressed_button_colour"]) @@ -37,6 +38,7 @@ class StartMenu(GameState): 50, lambda: self.switch_state("settings_menu")) self.settings_button.set_text("Settings") + self.settings_button.set_font(self.styling["font"]) self.settings_button.set_font_size(40) self.settings_button.set_colour(self.styling["button_colour"]) self.settings_button.set_pressed_colour(self.styling["pressed_button_colour"]) @@ -47,6 +49,7 @@ class StartMenu(GameState): 50, pygame.quit) self.quit_button.set_text("Quit") + self.quit_button.set_font(self.styling["font"]) self.quit_button.set_font_size(40) self.quit_button.set_colour(self.styling["button_colour"]) self.quit_button.set_pressed_colour(self.styling["pressed_button_colour"]) diff --git a/widgets/button.py b/widgets/button.py index 307abbd..d918a39 100644 --- a/widgets/button.py +++ b/widgets/button.py @@ -15,6 +15,7 @@ class Button: self.font_size = 20 self.colour = (255, 255, 255) self.pressed_colour = (200, 200, 200) + self.font = pygame.font.Font(None, self.font_size) self.pressed = False self.border_radius = 3 @@ -22,6 +23,9 @@ class Button: def get_font_size(self) -> int: return self.font_size + def get_font(self) -> pygame.font.Font: + return self.font + def get_text(self) -> str: return self.text @@ -37,6 +41,9 @@ class Button: def set_font_size(self, font_size: int) -> None: self.font_size = font_size + def set_font(self, font: pygame.Font) -> None: + self.font = font + def set_text(self, text: str) -> None: self.text = text @@ -60,9 +67,8 @@ class Button: self.image = pygame.image.load(image_path) self.image = pygame.transform.scale(self.image, (self.width, self.height)) - def _draw_text(self, screen, text: str, font_size: int) -> None: - font = pygame.font.Font(None, font_size) - text_surface = font.render(text, True, (0, 0, 0)) + def _draw_text(self, screen, text: str) -> None: + text_surface = self.font.render(text, True, (0, 0, 0)) text_rect = text_surface.get_rect(center=(self.x + self.width // 2, self.y + self.height // 2)) screen.blit(text_surface, text_rect) @@ -93,7 +99,7 @@ class Button: screen.blit(self.image, (self.x, self.y)) if self.text: - self._draw_text(screen, self.text, self.font_size) + self._draw_text(screen, self.text) if __name__ == "__main__": pygame.init()