Link d'entités à l'event sheduler

This commit is contained in:
Yannis 2024-01-05 18:37:05 +01:00
parent 00e72f4367
commit b424bf7aa2
Signed by: yannis
SSH key fingerprint: SHA256:Bz8K8QiTYUudf8MlthTM9MCLfgiYf/U1md3V9g9Wo14

View file

@ -1,6 +1,7 @@
from types import FunctionType
import src.engine.engine
from src.engine.entity import Entity
class EventSheduler:
@ -9,8 +10,9 @@ class EventSheduler:
self.area_callbacks = []
self.engine = engine
def register_area(self, area_rect: tuple[int, int, int, int], callback: FunctionType | classmethod | staticmethod):
self.area_callbacks.append((area_rect, callback))
def register_area(self, area_rect: tuple[int, int, int, int], callback: FunctionType | classmethod | staticmethod,
linked_entities_name: list[Entity]):
self.area_callbacks.append((area_rect, callback, linked_entities_name))
@staticmethod
def get_collisions_with_entity(rect: tuple[int, int, int, int], entity: 'Entity'):
@ -21,11 +23,11 @@ class EventSheduler:
rect[1] <= entity.y+entity.collision_rect[3])
def update(self):
"""Met à jour l'event sheluder et execute les actions si les conditions à son execution sont respéctées."""
# On itère dans la liste des zones de détection
for area in self.area_callbacks:
area_rect = area[0]
if self.get_collisions_with_entity(area_rect, self.engine.entity_manager.get_by_name("player")):
print("oui")
else:
print("non")
# On itère dans toutes les entités enregistrées
for entity in area[2]:
if self.get_collisions_with_entity(area[0], self.engine.entity_manager.get_by_name(entity)):
area[1](entity)