dialogs_event_sheduler #21
|
@ -2,6 +2,7 @@ from src.engine.boss_fight_manager import BossFightManager
|
|||
from src.engine.camera import Camera
|
||||
from src.engine.entity_manager import EntityManager
|
||||
from src.engine.event_handler import EventHandler
|
||||
from src.engine.event_sheduler import EventSheduler
|
||||
from src.engine.map_manager import MapManager
|
||||
from src.engine.renderer import Renderer
|
||||
from src.engine.enums import GameState
|
||||
|
@ -31,6 +32,7 @@ class Engine:
|
|||
self.camera = Camera()
|
||||
self.entity_manager = EntityManager(self.map_manager)
|
||||
self.boss_fight_manager = BossFightManager(self)
|
||||
self.event_sheduler = EventSheduler(self)
|
||||
|
||||
def loop(self):
|
||||
"""Fonction à lancer au début du programme et qui va lancer les updates dans une boucle.
|
||||
|
@ -47,6 +49,7 @@ class Engine:
|
|||
self.entity_manager.update(0.016666666)
|
||||
self.renderer.update(0.016666666)
|
||||
self.event_handler.update()
|
||||
self.event_sheduler.update()
|
||||
|
||||
def stop(self):
|
||||
"""Arrête le programme."""
|
||||
|
|
|
@ -1,14 +1,31 @@
|
|||
from types import FunctionType
|
||||
|
||||
import src.engine.engine
|
||||
|
||||
|
||||
class EventSheduler:
|
||||
"""Gère le lancement d'évenements avec des conditions."""
|
||||
def __init__(self):
|
||||
def __init__(self, engine: 'src.engine.engine.Engine'):
|
||||
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))
|
||||
|
||||
@staticmethod
|
||||
def get_collisions_with_entity(rect: tuple[int, int, int, int], entity: 'Entity'):
|
||||
"""Retourne True si l'entité donnée touche le rectange donné."""
|
||||
return (rect[0] <= entity.x+entity.collision_rect[2] and
|
||||
rect[0] + rect[2] >= entity.x+entity.collision_rect[0] and
|
||||
rect[1] + rect[3] >= entity.y+entity.collision_rect[1] and
|
||||
rect[1] <= entity.y+entity.collision_rect[3])
|
||||
|
||||
def update(self):
|
||||
for area in self.area_callbacks:
|
||||
area_rect = area[0]
|
||||
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")
|
||||
|
|
|
@ -17,10 +17,12 @@ class Game(Engine):
|
|||
self.load_boss_fight_assets()
|
||||
self.spawn_mobs()
|
||||
|
||||
self.DEBUG_MODE = False
|
||||
self.DEBUG_MODE = True
|
||||
|
||||
self.game_state = GameState.NORMAL
|
||||
|
||||
self.event_sheduler.register_area((0, 20, 20, 20), None)
|
||||
|
||||
def create_player_entity(self):
|
||||
"""Crée une entité joueur."""
|
||||
anim = Anim(0.5)
|
||||
|
|
Loading…
Reference in a new issue