ADD settings menu
This commit is contained in:
@@ -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
42
states/settings_menu.py
Normal 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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user