diff --git a/src/engine/event_handler.py b/src/engine/event_handler.py index df4b2ac..f00892c 100644 --- a/src/engine/event_handler.py +++ b/src/engine/event_handler.py @@ -89,7 +89,15 @@ class EventHandler: @staticmethod def get_slider_area_values(slider: list): """Donne la valeur de la zone de slider donnée.""" - return round((slider[0][0]-slider[5][0])/slider[5][2], 5), round((slider[0][1]-slider[5][1])/slider[5][3], 5) + if slider[5][2]: + x_value = round((slider[0][0]-slider[5][0])/slider[5][2], 5) + else: + x_value = -1 + if slider[5][3]: + y_value = round((slider[0][1]-slider[5][1])/slider[5][3], 5) + else: + y_value = -1 + return x_value, y_value def update(self): diff --git a/src/engine/menu_manager.py b/src/engine/menu_manager.py index 7c63987..b5463ef 100644 --- a/src/engine/menu_manager.py +++ b/src/engine/menu_manager.py @@ -142,7 +142,7 @@ class MenuManager: widget.is_window_relative, widget.set_hover_state) elif isinstance(widget, Slider): self.engine.event_handler.register_slider_area(widget.cursor_size, - (widget.x, widget.y, widget.width, 1), (True, False), + (widget.x, widget.y, widget.width, 0), (True, False), widget.area_name, widget.is_window_relative, hover_callback=widget.set_hover_state, diff --git a/src/engine/renderer.py b/src/engine/renderer.py index c1cadf8..31fe89d 100644 --- a/src/engine/renderer.py +++ b/src/engine/renderer.py @@ -295,22 +295,39 @@ class Renderer: else: slider_image = widget.base_image + rail_image = widget.rail_image + if widget.is_window_relative == 0: slider_image = transform.scale(slider_image, (slider_image.get_width()*window_size[0]/self.window_size[0], slider_image.get_height()*window_size[0]/self.window_size[0])) + rail_image = transform.scale(rail_image, + (rail_image.get_width() * window_size[0] / self.window_size[0], + rail_image.get_height() * window_size[0] / self.window_size[ + 0])) + width = widget.width*window_size[0] elif widget.is_window_relative == 1: slider_image = transform.scale(slider_image, (slider_image.get_width()*window_size[1]/self.window_size[1], slider_image.get_height()*window_size[1]/self.window_size[1])) + rail_image = transform.scale(rail_image, + (rail_image.get_width() * window_size[1] / self.window_size[1], + rail_image.get_height() * window_size[1] / self.window_size[ + 1])) + width = widget.width * window_size[1] elif widget.is_window_relative == 2: slider_image = transform.scale(slider_image, (slider_image.get_width()*window_size[0]/self.window_size[0], slider_image.get_height()*window_size[1]/self.window_size[1])) + rail_image = transform.scale(rail_image, + (rail_image.get_width() * window_size[0] / self.window_size[0], + rail_image.get_height() * window_size[1] / self.window_size[ + 1])) + width = widget.width * min(window_size[0], window_size[1]) - self.window.blit(widget.rail_image, (x+(widget.width-widget.rail_image.get_width()) // 2, - y - widget.rail_image.get_height() // 2)) - self.window.blit(slider_image, (x+widget.value*widget.width-slider_image.get_width()//2, + self.window.blit(rail_image, (x+(width-rail_image.get_width()) // 2, + y - rail_image.get_height() // 2)) + self.window.blit(slider_image, (x+widget.value*width-slider_image.get_width()//2, y-slider_image.get_height()//2)) def render_dialogs_box(self): diff --git a/src/main.py b/src/main.py index c979574..bb5b4e6 100644 --- a/src/main.py +++ b/src/main.py @@ -38,7 +38,7 @@ class Game(Engine): def setup_main_menu(self): """Crée les éléments du menu principal.""" menu = Menu() - menu.add_widget(Label(0.5, 0.1, "The Forest's Secret", 0.1, (0, 0, 0), True, 0)) + menu.add_widget(Label(0.5, 0.1, "The Forest's Secret", 0.1, (0, 0, 0), "game_title", True, 0)) btn_base_image = pygame.image.load("assets/textures/GUI/button_1.png").convert_alpha() btn_hover_image = pygame.image.load("assets/textures/GUI/button_2.png").convert_alpha() @@ -48,7 +48,7 @@ class Game(Engine): slider_rail_image = pygame.image.load("assets/textures/GUI/slider_rail_1.png").convert_alpha() menu.add_widget(Button(0.5, 0.3, "play", 0.08, (0, 0, 0), self.start_game, btn_base_image, btn_hover_image, "play_button", True, 0)) - menu.add_widget(Slider((50, 50), (100, 300), 136, slider_base_image, slider_hover_image, slider_rail_image, "test_slider", value_changed_callback=print)) + menu.add_widget(Slider((0.1, 0.1), (0.2, 0.2), 0.2255, slider_base_image, slider_hover_image, slider_rail_image, "test_slider", value_changed_callback=print, is_window_relative=0)) self.menu_manager.register_menu(menu, "main") self.menu_manager.show("main")