From 7f58e238d7e4a7ef2b0755f9b248ef2dd8d973c9 Mon Sep 17 00:00:00 2001 From: ThisBirchWood Date: Mon, 21 Apr 2025 17:25:27 +0200 Subject: [PATCH] ADD back button to main game & PATCH broken main page --- controllers/gui_controller.py | 8 ++++++-- render/gui_renderer.py | 10 +++++++--- states/game.py | 2 +- states/start_menu.py | 7 ++++--- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/controllers/gui_controller.py b/controllers/gui_controller.py index d9103b0..631d30e 100644 --- a/controllers/gui_controller.py +++ b/controllers/gui_controller.py @@ -1,7 +1,7 @@ from render.gui_renderer import GUIRenderer class GUIController: - def __init__(self, gui_renderer: GUIRenderer, callback_function): + def __init__(self, gui_renderer: GUIRenderer, callback_function, previous_states): self.callback_function = callback_function self.gui_renderer = gui_renderer @@ -9,6 +9,10 @@ class GUIController: self.settings_button = gui_renderer.settings_button self.settings_button.set_action(lambda: self.callback_function("settings_menu")) + self.back_button = gui_renderer.back_button + self.back_button.set_action(lambda: self.callback_function(previous_states.pop())) + def update(self, event): self.slider.handle_event(event) - self.settings_button.handle_event(event) \ No newline at end of file + self.settings_button.handle_event(event) + self.back_button.handle_event(event) \ No newline at end of file diff --git a/render/gui_renderer.py b/render/gui_renderer.py index 4db99fe..51e0f32 100644 --- a/render/gui_renderer.py +++ b/render/gui_renderer.py @@ -10,10 +10,13 @@ class GUIRenderer: self.slider = HorizontalSlider(self.screen, 50, 650, self.screen.get_width()-100, 20, 1, self.match.max_tick) - # Settings button + # Buttons self.settings_button = Button(self.screen.get_width()-40, 10, 30, 30, None) self.settings_button.set_image("assets/setting.png") + self.back_button = Button(self.screen.get_width()-80, 10, 30, 30, None) + self.back_button.set_image("assets/arrow.png") + self.colour = (255, 255, 255) def _render_current_tick(self, match_tick, max_tick): @@ -24,8 +27,9 @@ class GUIRenderer: text = self.font.render(f"Score: {team_1_score} - {team_2_score}", True, self.colour) self.screen.blit(text, (10, 40)) - def _render_settings_button(self): + def _render_buttons(self): self.settings_button.draw(self.screen) + self.back_button.draw(self.screen) def _render_slider(self): # Update slider value @@ -40,5 +44,5 @@ class GUIRenderer: def render(self): self._render_current_tick(self.match.tick, self.match.max_tick) self._render_team_scores(self.match.team_1.score, self.match.team_2.score) - self._render_settings_button() + self._render_buttons() self._render_slider() diff --git a/states/game.py b/states/game.py index 8ba5d3b..d5e4a6f 100644 --- a/states/game.py +++ b/states/game.py @@ -24,7 +24,7 @@ class Game(GameState): # Controllers self.player_controller = PlayerController(self.player_renderer, self.match) - self.gui_controller = GUIController(self.gui_render, self.switch_state) + self.gui_controller = GUIController(self.gui_render, self.switch_state, self.context["previous_states"]) def handle_events(self, events): diff --git a/states/start_menu.py b/states/start_menu.py index 445c784..d0d5253 100644 --- a/states/start_menu.py +++ b/states/start_menu.py @@ -80,12 +80,13 @@ class StartMenu(GameState): for event in events: if event.type == pygame.QUIT: pygame.quit() - self.upload_demo_button.handle_event(event) - self.settings_button.handle_event(event) + if not self.file_dialog: + 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: - self.file_dialog.kill() + self.file_dialog = None self.demo_file = event.text self._start_game_callback()