Fix du méga rectangle en debug en mode responsible du slider

This commit is contained in:
Yannis 2024-01-12 23:09:20 +01:00
parent f157d33f16
commit c9ef08e2bc
4 changed files with 32 additions and 7 deletions

View file

@ -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):

View file

@ -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,

View file

@ -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):

View file

@ -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")