ADD back button to main game & PATCH broken main page
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
from render.gui_renderer import GUIRenderer
|
from render.gui_renderer import GUIRenderer
|
||||||
|
|
||||||
class GUIController:
|
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.callback_function = callback_function
|
||||||
|
|
||||||
self.gui_renderer = gui_renderer
|
self.gui_renderer = gui_renderer
|
||||||
@@ -9,6 +9,10 @@ class GUIController:
|
|||||||
self.settings_button = gui_renderer.settings_button
|
self.settings_button = gui_renderer.settings_button
|
||||||
self.settings_button.set_action(lambda: self.callback_function("settings_menu"))
|
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):
|
def update(self, event):
|
||||||
self.slider.handle_event(event)
|
self.slider.handle_event(event)
|
||||||
self.settings_button.handle_event(event)
|
self.settings_button.handle_event(event)
|
||||||
|
self.back_button.handle_event(event)
|
||||||
@@ -10,10 +10,13 @@ class GUIRenderer:
|
|||||||
|
|
||||||
self.slider = HorizontalSlider(self.screen, 50, 650, self.screen.get_width()-100, 20, 1, self.match.max_tick)
|
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 = Button(self.screen.get_width()-40, 10, 30, 30, None)
|
||||||
self.settings_button.set_image("assets/setting.png")
|
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)
|
self.colour = (255, 255, 255)
|
||||||
|
|
||||||
def _render_current_tick(self, match_tick, max_tick):
|
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)
|
text = self.font.render(f"Score: {team_1_score} - {team_2_score}", True, self.colour)
|
||||||
self.screen.blit(text, (10, 40))
|
self.screen.blit(text, (10, 40))
|
||||||
|
|
||||||
def _render_settings_button(self):
|
def _render_buttons(self):
|
||||||
self.settings_button.draw(self.screen)
|
self.settings_button.draw(self.screen)
|
||||||
|
self.back_button.draw(self.screen)
|
||||||
|
|
||||||
def _render_slider(self):
|
def _render_slider(self):
|
||||||
# Update slider value
|
# Update slider value
|
||||||
@@ -40,5 +44,5 @@ class GUIRenderer:
|
|||||||
def render(self):
|
def render(self):
|
||||||
self._render_current_tick(self.match.tick, self.match.max_tick)
|
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_team_scores(self.match.team_1.score, self.match.team_2.score)
|
||||||
self._render_settings_button()
|
self._render_buttons()
|
||||||
self._render_slider()
|
self._render_slider()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class Game(GameState):
|
|||||||
|
|
||||||
# Controllers
|
# Controllers
|
||||||
self.player_controller = PlayerController(self.player_renderer, self.match)
|
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):
|
def handle_events(self, events):
|
||||||
|
|||||||
@@ -80,12 +80,13 @@ class StartMenu(GameState):
|
|||||||
for event in events:
|
for event in events:
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
self.upload_demo_button.handle_event(event)
|
if not self.file_dialog:
|
||||||
self.settings_button.handle_event(event)
|
self.upload_demo_button.handle_event(event)
|
||||||
|
self.settings_button.handle_event(event)
|
||||||
self.manager.process_events(event)
|
self.manager.process_events(event)
|
||||||
# Handle file dialog interaction
|
# Handle file dialog interaction
|
||||||
if event.type == pygame_gui.UI_FILE_DIALOG_PATH_PICKED:
|
if event.type == pygame_gui.UI_FILE_DIALOG_PATH_PICKED:
|
||||||
self.file_dialog.kill()
|
self.file_dialog = None
|
||||||
self.demo_file = event.text
|
self.demo_file = event.text
|
||||||
self._start_game_callback()
|
self._start_game_callback()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user