diff --git a/main.py b/main.py index 43d02e9..7c73bdc 100644 --- a/main.py +++ b/main.py @@ -15,12 +15,18 @@ def main(): "match": None, "screen": screen, "previous_states": Stack(), - "font": pygame.font.Font(None, 36), - "small_font": pygame.font.Font(None, 15), "options": { "show_yaw": True, "show_health": True, "show_names": True + }, + "styling": { + "font": pygame.font.Font(None, 36), + "small_font": pygame.font.Font(None, 15), + "button_colour": (200, 200, 200), + "pressed_button_colour": (150, 150, 150), + "text_colour": (255, 255, 255), + "background_colour": (30, 30, 30) } } diff --git a/render/settings_menu_renderer.py b/render/settings_menu_renderer.py index 15e72d9..318d6a3 100644 --- a/render/settings_menu_renderer.py +++ b/render/settings_menu_renderer.py @@ -3,20 +3,23 @@ from widgets.button import Button from widgets.switch import Switch class SettingsMenuRenderer: - def __init__(self, screen, options, font): + def __init__(self, screen, options, styling): self.screen = screen self.options = options - self.font = font + self.styling = styling + self.font = self.styling["font"] self.text_start_x = 100 self.widget_start_x = 500 # Text - self.show_yaw_text = self.font.render("Show Yaw: ", True, (255, 255, 255)) - self.show_health_text = self.font.render("Show Health: ", True, (255, 255, 255)) - self.show_names_text = self.font.render("Show Names: ", True, (255, 255, 255)) + self.show_yaw_text = self.font.render("Show Yaw: ", True, self.styling["text_colour"]) + self.show_health_text = self.font.render("Show Health: ", True, (self.styling["text_colour"])) + self.show_names_text = self.font.render("Show Names: ", True, self.styling["text_colour"]) # Buttons self.back_button = Button(10, 10, 50, 50, None) + self.back_button.set_colour(self.styling["button_colour"]) + self.back_button.set_pressed_colour(self.styling["pressed_button_colour"]) self.back_button.set_image("assets/arrow.png") # Switches @@ -26,7 +29,7 @@ class SettingsMenuRenderer: def render(self): """Renders the settings menu.""" - self.screen.fill((30, 30, 30)) # Clear screen + self.screen.fill(self.styling["background_colour"]) # Clear screen self.screen.blit(self.show_yaw_text, (self.text_start_x, self.show_yaw_button.y)) self.show_yaw_button.draw(self.screen) diff --git a/states/game.py b/states/game.py index 3fb6066..1abc985 100644 --- a/states/game.py +++ b/states/game.py @@ -45,8 +45,8 @@ class Game(GameState): def draw(self): """Draws everything on screen.""" - self.screen.fill((0, 0, 0)) - self.game_box.fill((0, 0, 0, 0)) + self.screen.fill(self.styling["background_colour"]) + self.game_box.fill(self.styling["background_colour"]) self.map_renderer.render() self.player_renderer.render() diff --git a/states/game_state.py b/states/game_state.py index 8336092..5584acc 100644 --- a/states/game_state.py +++ b/states/game_state.py @@ -6,11 +6,11 @@ class GameState: self.context = context self.screen = self.context.get("screen") self.match = self.context.get("match", None) - self.font = self.context.get("font", pygame.font.Font(None, 36)) self.small_font = self.context.get("small_font", pygame.font.Font(None, 15)) self.options = self.context.get("options", { "show_yaw": True }) + self.styling = self.context.get("styling", None) def handle_events(self, events): pass diff --git a/states/settings_menu.py b/states/settings_menu.py index 2f499bd..e31b2e8 100644 --- a/states/settings_menu.py +++ b/states/settings_menu.py @@ -9,7 +9,7 @@ class SettingsMenu(GameState): def __init__(self, switch_state_callback, context): super().__init__(switch_state_callback, context) - self.settings_renderer = SettingsMenuRenderer(self.screen, self.context["options"], self.font) + self.settings_renderer = SettingsMenuRenderer(self.screen, self.context["options"], self.styling) self.settings_controller = SettingsController(self.settings_renderer, self.switch_state, context) def handle_events(self, events): diff --git a/states/start_menu.py b/states/start_menu.py index ac6a74f..7b06357 100644 --- a/states/start_menu.py +++ b/states/start_menu.py @@ -24,6 +24,8 @@ class StartMenu(GameState): self._get_demo) self.upload_demo_button.set_text("Upload Demo") 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"]) self.settings_button = Button(self.default_button_start_x, 350, @@ -32,6 +34,8 @@ class StartMenu(GameState): lambda: self.switch_state("settings_menu")) self.settings_button.set_text("Settings") 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"]) self.quit_button = Button(self.default_button_start_x, 450, @@ -40,6 +44,8 @@ class StartMenu(GameState): pygame.quit) self.quit_button.set_text("Quit") 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"]) # file dialog self.file_dialog = None @@ -107,7 +113,7 @@ class StartMenu(GameState): def draw(self): """Draws everything on screen.""" - self.screen.fill((30, 30, 30)) # Clear screen + self.screen.fill(self.styling["background_colour"]) # Clear screen self.upload_demo_button.draw(self.screen) self.settings_button.draw(self.screen) self.quit_button.draw(self.screen) diff --git a/widgets/button.py b/widgets/button.py index 1943369..307abbd 100644 --- a/widgets/button.py +++ b/widgets/button.py @@ -28,6 +28,12 @@ class Button: def get_border_radius(self) -> int: return self.border_radius + def get_colour(self) -> tuple: + return self.colour + + def get_pressed_colour(self) -> tuple: + return self.pressed_colour + def set_font_size(self, font_size: int) -> None: self.font_size = font_size @@ -37,6 +43,12 @@ class Button: def set_border_radius(self, border_radius: int) -> None: self.border_radius = border_radius + def set_colour(self, colour: tuple) -> None: + self.colour = colour + + def set_pressed_colour(self, pressed_colour: tuple) -> None: + self.pressed_colour = pressed_colour + def set_image(self, image_path: str) -> None: self._load_image(image_path)