REFACTOR styling

This commit is contained in:
2025-04-23 18:36:33 +02:00
parent 022e789d9c
commit 78c9dc1341
7 changed files with 40 additions and 13 deletions

10
main.py
View File

@@ -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)
}
}

View File

@@ -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)

View File

@@ -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()

View File

@@ -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

View File

@@ -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):

View File

@@ -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)

View File

@@ -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)