Début de support de zones slider dans l'event handler
This commit is contained in:
parent
d74a7038a0
commit
636e006e50
|
@ -5,6 +5,7 @@ from pygame import event, display
|
||||||
from pygame.locals import *
|
from pygame.locals import *
|
||||||
|
|
||||||
import src.engine.engine as engine
|
import src.engine.engine as engine
|
||||||
|
from src.engine.menu_manager import Slider
|
||||||
|
|
||||||
|
|
||||||
class EventHandler:
|
class EventHandler:
|
||||||
|
@ -15,6 +16,7 @@ class EventHandler:
|
||||||
self.key_pressed = []
|
self.key_pressed = []
|
||||||
self.buttons_area = []
|
self.buttons_area = []
|
||||||
self.hovered_area = []
|
self.hovered_area = []
|
||||||
|
self.sliders_area = []
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_click_collision(rect: tuple[float | int, float | int, float | int, float | int], point: tuple[int, int],
|
def get_click_collision(rect: tuple[float | int, float | int, float | int, float | int], point: tuple[int, int],
|
||||||
|
@ -56,6 +58,14 @@ class EventHandler:
|
||||||
|
|
||||||
self.buttons_area = cleared_list
|
self.buttons_area = cleared_list
|
||||||
|
|
||||||
|
def register_slider_area(self, rect: list[float | int, float | int, float | int, float | int],
|
||||||
|
is_window_relative: int = -1):
|
||||||
|
"""Enregistre une zone comme une zone déplaçable à l'écran."""
|
||||||
|
assert isinstance(rect, list) # utilisé pour empêcher les tuples
|
||||||
|
|
||||||
|
self.sliders_area.append([rect, is_window_relative, False])
|
||||||
|
# Le premier booléen correspond à l'état de suivi de la souris
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Vérifie s'il y a de nouvelles interactions et les traites."""
|
"""Vérifie s'il y a de nouvelles interactions et les traites."""
|
||||||
|
|
||||||
|
@ -74,6 +84,14 @@ class EventHandler:
|
||||||
for area in self.buttons_area:
|
for area in self.buttons_area:
|
||||||
if self.get_click_collision(area[0], e.pos, area[2]):
|
if self.get_click_collision(area[0], e.pos, area[2]):
|
||||||
area[1]()
|
area[1]()
|
||||||
|
|
||||||
|
for area in self.sliders_area:
|
||||||
|
if self.get_click_collision(area[0], e.pos, area[1]):
|
||||||
|
area[2] = True
|
||||||
|
elif e.type == MOUSEBUTTONUP:
|
||||||
|
for area in self.sliders_area:
|
||||||
|
area[2] = False
|
||||||
|
|
||||||
elif e.type == MOUSEMOTION:
|
elif e.type == MOUSEMOTION:
|
||||||
for area in self.buttons_area:
|
for area in self.buttons_area:
|
||||||
if area[4] is not None:
|
if area[4] is not None:
|
||||||
|
@ -86,6 +104,11 @@ class EventHandler:
|
||||||
area[4](False)
|
area[4](False)
|
||||||
self.hovered_area.remove(area)
|
self.hovered_area.remove(area)
|
||||||
|
|
||||||
|
for area in self.sliders_area:
|
||||||
|
if area[2]:
|
||||||
|
area[0][0] = e.pos[0]
|
||||||
|
area[0][1] = e.pos[1]
|
||||||
|
|
||||||
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:
|
||||||
self.engine.entity_manager.move_player_controls(1, 0)
|
self.engine.entity_manager.move_player_controls(1, 0)
|
||||||
|
|
Loading…
Reference in a new issue