From 82f8b692fbffbe7c6853e8545f6f27911625f3ee Mon Sep 17 00:00:00 2001 From: Yannis300307 Date: Sun, 7 Jan 2024 18:11:28 +0100 Subject: [PATCH] Ajout du hover du bouton --- src/engine/event_handler.py | 11 +++++++++-- src/engine/menu_manager.py | 4 ++-- src/engine/renderer.py | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/engine/event_handler.py b/src/engine/event_handler.py index 242f2b8..1568ed0 100644 --- a/src/engine/event_handler.py +++ b/src/engine/event_handler.py @@ -76,8 +76,15 @@ class EventHandler: area[1]() elif e.type == MOUSEMOTION: for area in self.buttons_area: - if area[4] is not None and self.get_click_collision(area[0], e.pos, area[2]): - area[4]() + if area[4] is not None: + if self.get_click_collision(area[0], e.pos, area[2]): + if area not in self.hovered_area: + area[4](True) + self.hovered_area.append(area) + else: + if area in self.hovered_area: + area[4](False) + self.hovered_area.remove(area) if self.engine.entity_manager.player_entity_name: if K_RIGHT in self.key_pressed: diff --git a/src/engine/menu_manager.py b/src/engine/menu_manager.py index 44dcb1f..062e181 100644 --- a/src/engine/menu_manager.py +++ b/src/engine/menu_manager.py @@ -42,6 +42,7 @@ class Button(Widget): self.hovered = False def set_hover_state(self, state: bool): + """Modifie la valeur du hover.""" self.hovered = state @@ -78,8 +79,7 @@ class MenuManager: area_x -= width/2 area_y -= height/2 self.engine.event_handler.register_button_area((area_x, area_y, width, height), btn.callback, btn.area_name, - btn.is_window_relative, lambda: print("hover")) - print(btn.is_window_relative) + btn.is_window_relative, btn.set_hover_state) def show(self, name: str): """Affiche le menu au nom donné.""" diff --git a/src/engine/renderer.py b/src/engine/renderer.py index 894cafb..89a0126 100644 --- a/src/engine/renderer.py +++ b/src/engine/renderer.py @@ -205,7 +205,10 @@ class Renderer: rendered_text = text_font.render(widget.text, True, widget.color) - btn_image = widget.base_image + if widget.hovered: + btn_image = widget.base_image + else: + btn_image = widget.hover_image btn_image = transform.scale(btn_image, (btn_image.get_width()*window_size[0]/self.window_size[0], btn_image.get_height()*window_size[0]/self.window_size[0]))