ADD settings menu

This commit is contained in:
2025-04-20 16:10:06 +02:00
parent 03b63fa9b6
commit ae4ab65081
7 changed files with 85 additions and 26 deletions

View File

@@ -7,7 +7,7 @@ class Game(GameState):
def __init__(self, switch_state_callback, context):
super().__init__(switch_state_callback, context)
self.renderer = Renderer(self.match, self.screen)
self.renderer = Renderer(self.match, self.screen, self.options)
self.player_controller = PlayerController(self.renderer.player_render, self.match)
def handle_events(self, events):
@@ -24,5 +24,4 @@ class Game(GameState):
def draw(self):
"""Draws everything on screen."""
self.renderer.render()
pygame.display.flip()
self.renderer.render()

42
states/settings_menu.py Normal file
View File

@@ -0,0 +1,42 @@
from states.game_state import GameState
from widgets.button import Button
from widgets.switch import Switch
import pygame
class SettingsMenu(GameState):
def __init__(self, switch_state_callback, context):
super().__init__(switch_state_callback, context)
# Buttons
self.back_button = Button(10, 10, 50, 50, lambda: self.switch_state("start_menu"))
self.back_button.set_text("Back")
self.show_yaw_text = self.font.render("Show Yaw: ", True, (255, 255, 255))
self.show_yaw_button = Switch(100, 100, 50, 50, self.options["show_yaw"])
def handle_events(self, events):
"""Handles user inputs."""
for event in events:
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
self.switch_state("start_menu")
self.show_yaw_button.handle_event(event)
self.back_button.handle_event(event)
def update(self):
"""Updates settings based on user input."""
if self.show_yaw_button.get_is_toggled():
self.options["show_yaw"] = True
else:
self.options["show_yaw"] = False
# Save settings to context
self.context["options"] = self.options
def draw(self):
"""Renders the settings menu."""
self.screen.fill((30, 30, 30)) # Clear screen
self.screen.blit(self.show_yaw_text, (self.show_yaw_button.x + self.show_yaw_button.width + 10,
self.show_yaw_button.y))
self.show_yaw_button.draw(self.screen)
self.back_button.draw(self.screen)

View File

@@ -17,13 +17,21 @@ class StartMenu(GameState):
self.default_button_width = self.screen.get_width() * 0.8
# buttons
self.button = Button(self.default_button_start_x,
self.upload_demo_button = Button(self.default_button_start_x,
100,
self.default_button_width,
50,
self._get_demo)
self.button.set_text("Upload Demo")
self.button.set_font_size(40)
self.upload_demo_button.set_text("Upload Demo")
self.upload_demo_button.set_font_size(40)
self.settings_button = Button(self.default_button_start_x,
200,
self.default_button_width,
50,
lambda: self.switch_state("settings_menu"))
self.settings_button.set_text("Settings")
self.settings_button.set_font_size(40)
# file dialog
self.file_dialog = None
@@ -57,7 +65,7 @@ class StartMenu(GameState):
team_1 = Team()
team_1.set_ct()
team_2 = Team()
m = Match(map_name, game_info, team_1, team_2)
m = Match(map_name, game_info, team_1, team_2, self.options)
for index, row in players.iterrows():
if row["team_number"] == 2:
team_1.add_player(Player(row["name"], row["steamid"]))
@@ -72,7 +80,8 @@ class StartMenu(GameState):
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
self.button.handle_event(event)
self.upload_demo_button.handle_event(event)
self.settings_button.handle_event(event)
self.manager.process_events(event)
# Handle file dialog interaction
if event.type == pygame_gui.UI_FILE_DIALOG_PATH_PICKED:
@@ -85,7 +94,9 @@ class StartMenu(GameState):
def draw(self):
"""Draws everything on screen."""
self.button.draw(self.screen)
self.screen.fill((30, 30, 30)) # Clear screen
self.upload_demo_button.draw(self.screen)
self.settings_button.draw(self.screen)
self.manager.draw_ui(self.screen)