Centrage des sliders

This commit is contained in:
Yannis 2024-01-10 20:54:39 +01:00
parent 163f1f0901
commit 38a9da9463
2 changed files with 19 additions and 11 deletions

View file

@ -63,7 +63,7 @@ class EventHandler:
motion_axes: tuple[bool, bool], motion_axes: tuple[bool, bool],
is_window_relative: int = -1): is_window_relative: int = -1):
"""Enregistre une zone comme une zone déplaçable à l'écran.""" """Enregistre une zone comme une zone déplaçable à l'écran."""
self.sliders_area.append([[motion_axes[0], motion_axes[1]]+list(size), is_window_relative, False, (0, 0), motion_axes, motion_rect]) self.sliders_area.append([[motion_rect[0], motion_rect[1], *size], is_window_relative, False, (0, 0), motion_axes, motion_rect])
print(self.sliders_area[0]) print(self.sliders_area[0])
# Le premier booléen correspond à l'état de suivi de la souris # Le premier booléen correspond à l'état de suivi de la souris
@ -87,7 +87,9 @@ class EventHandler:
area[1]() area[1]()
for area in self.sliders_area: for area in self.sliders_area:
if self.get_click_collision(area[0], e.pos, area[1]): if self.get_click_collision(
(area[0][0]-area[0][2]//2, area[0][1]-area[0][3]//2, area[0][2], area[0][3]),
e.pos, area[1]):
area[2] = True area[2] = True
area[3] = (e.pos[0] - area[0][0], e.pos[1] - area[0][1]) # add support for responsibility area[3] = (e.pos[0] - area[0][0], e.pos[1] - area[0][1]) # add support for responsibility
elif e.type == MOUSEBUTTONUP: elif e.type == MOUSEBUTTONUP:
@ -113,15 +115,15 @@ class EventHandler:
if area[4][1]: if area[4][1]:
area[0][1] = e.pos[1]-area[3][1] area[0][1] = e.pos[1]-area[3][1]
if area[0][0]+area[0][2]/2 < area[5][0]: if area[0][0] < area[5][0]:
area[0][0] = area[5][0]-area[0][2]/2 area[0][0] = area[5][0]
if area[0][0]+area[0][2]/2 > area[5][0]+area[5][2]: if area[0][0] > area[5][0]+area[5][2]:
area[0][0] = area[5][0]+area[5][2]-area[0][2]/2 area[0][0] = area[5][0]+area[5][2]
if area[0][1]+area[0][3]/2 < area[5][1]: if area[0][1] < area[5][1]:
area[0][1] = area[5][1]-area[0][3]/2 area[0][1] = area[5][1]
if area[0][1]+area[0][3]/2 > area[5][1]+area[5][3]: if area[0][1] > area[5][1]+area[5][3]:
area[0][1] = area[5][1]+area[5][3]-area[0][3]/2 area[0][1] = area[5][1]+area[5][3]
if self.engine.entity_manager.player_entity_name: if self.engine.entity_manager.player_entity_name:
if K_RIGHT in self.key_pressed: if K_RIGHT in self.key_pressed:

View file

@ -173,9 +173,15 @@ class Renderer:
area[5][2] * window_size[0], area[5][3] * window_size[1]), width=1) area[5][2] * window_size[0], area[5][3] * window_size[1]), width=1)
else: else:
draw.rect(self.window, (0, 255, 20), draw.rect(self.window, (0, 255, 20),
area[0], width=1) (area[0][0]-area[0][2]//2, area[0][1]-area[0][3]//2, area[0][2], area[0][3]), width=1)
draw.rect(self.window, (0, 255, 200), draw.rect(self.window, (0, 255, 200),
area[5], width=1) area[5], width=1)
draw.line(self.window, (255, 0, 0),
(area[0][0]-2, area[0][1]),
(area[0][0]+2, area[0][1]))
draw.line(self.window, (255, 0, 0),
(area[0][0], area[0][1]-2),
(area[0][0], area[0][1]+2))
# Rendu présent dans tous les types de jeu # Rendu présent dans tous les types de jeu
self.render_dialogs_box() self.render_dialogs_box()