Link d'entités à l'event sheduler
This commit is contained in:
parent
00e72f4367
commit
b424bf7aa2
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue