From a56f45748234aff2886ad7c5e0e2e5167d6d9f02 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 6 Jan 2024 16:50:37 +0200 Subject: [PATCH] refactor(game): mouse position --- src/game/screens/button.py | 10 +++++++--- src/game/screens/main.py | 10 ++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/game/screens/button.py b/src/game/screens/button.py index b50b981..426022c 100644 --- a/src/game/screens/button.py +++ b/src/game/screens/button.py @@ -17,14 +17,18 @@ class Button(BaseButton, BaseScreen, SceenElement, TextScreen): self._set_default_background_color() self._set_default_text_color() - def on_click(self) -> None: + def on_click(self, event: pygame.Event) -> None: """Handle click event.""" - if self.action: + if ( + event.type == pygame.MOUSEBUTTONDOWN + and self.rect.collidepoint(event.pos) + and self.action + ): self.action() def on_hover(self, event: pygame.Event) -> None: """Handle hover event.""" - if self.rect.collidepoint(event.pos): + if event.type == pygame.MOUSEMOTION and self.rect.collidepoint(event.pos): self._set_background_color(CONFIG.colors.bg_visual) else: self._set_default_background_color() diff --git a/src/game/screens/main.py b/src/game/screens/main.py index e061c29..1033bea 100644 --- a/src/game/screens/main.py +++ b/src/game/screens/main.py @@ -38,13 +38,10 @@ class Main(BaseScreen, SceenElement, TextScreen): elif event.type == pygame.KEYDOWN: if event.key == pygame.K_q: self.exit() - elif event.type == pygame.MOUSEBUTTONDOWN: - mouse_pos = pygame.mouse.get_pos() - for button in self.buttons: - if button.rect.collidepoint(mouse_pos): - button.on_click() - elif event.type == pygame.MOUSEMOTION: + + if not self.game: for button in self.buttons: + button.on_click(event) button.on_hover(event) def run(self) -> None: @@ -66,6 +63,7 @@ class Main(BaseScreen, SceenElement, TextScreen): sys.exit() def play(self) -> "Main": + self._draw_background() self.game = Game(self.game_mode) return self