Ajout d'une zone d'execution d'events
This commit is contained in:
parent
a3b30cdd2f
commit
00e72f4367
|
@ -2,6 +2,7 @@ from src.engine.boss_fight_manager import BossFightManager
|
||||||
from src.engine.camera import Camera
|
from src.engine.camera import Camera
|
||||||
from src.engine.entity_manager import EntityManager
|
from src.engine.entity_manager import EntityManager
|
||||||
from src.engine.event_handler import EventHandler
|
from src.engine.event_handler import EventHandler
|
||||||
|
from src.engine.event_sheduler import EventSheduler
|
||||||
from src.engine.map_manager import MapManager
|
from src.engine.map_manager import MapManager
|
||||||
from src.engine.renderer import Renderer
|
from src.engine.renderer import Renderer
|
||||||
from src.engine.enums import GameState
|
from src.engine.enums import GameState
|
||||||
|
@ -31,6 +32,7 @@ class Engine:
|
||||||
self.camera = Camera()
|
self.camera = Camera()
|
||||||
self.entity_manager = EntityManager(self.map_manager)
|
self.entity_manager = EntityManager(self.map_manager)
|
||||||
self.boss_fight_manager = BossFightManager(self)
|
self.boss_fight_manager = BossFightManager(self)
|
||||||
|
self.event_sheduler = EventSheduler(self)
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
"""Fonction à lancer au début du programme et qui va lancer les updates dans une boucle.
|
"""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.entity_manager.update(0.016666666)
|
||||||
self.renderer.update(0.016666666)
|
self.renderer.update(0.016666666)
|
||||||
self.event_handler.update()
|
self.event_handler.update()
|
||||||
|
self.event_sheduler.update()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
"""Arrête le programme."""
|
"""Arrête le programme."""
|
||||||
|
|
|
@ -1,14 +1,31 @@
|
||||||
from types import FunctionType
|
from types import FunctionType
|
||||||
|
|
||||||
|
import src.engine.engine
|
||||||
|
|
||||||
|
|
||||||
class EventSheduler:
|
class EventSheduler:
|
||||||
"""Gère le lancement d'évenements avec des conditions."""
|
"""Gère le lancement d'évenements avec des conditions."""
|
||||||
def __init__(self):
|
def __init__(self, engine: 'src.engine.engine.Engine'):
|
||||||
self.area_callbacks = []
|
self.area_callbacks = []
|
||||||
|
self.engine = engine
|
||||||
|
|
||||||
def register_area(self, area_rect: tuple[int, int, int, int], callback: FunctionType | classmethod | staticmethod):
|
def register_area(self, area_rect: tuple[int, int, int, int], callback: FunctionType | classmethod | staticmethod):
|
||||||
self.area_callbacks.append((area_rect, callback))
|
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):
|
def update(self):
|
||||||
for area in self.area_callbacks:
|
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.load_boss_fight_assets()
|
||||||
self.spawn_mobs()
|
self.spawn_mobs()
|
||||||
|
|
||||||
self.DEBUG_MODE = False
|
self.DEBUG_MODE = True
|
||||||
|
|
||||||
self.game_state = GameState.NORMAL
|
self.game_state = GameState.NORMAL
|
||||||
|
|
||||||
|
self.event_sheduler.register_area((0, 20, 20, 20), None)
|
||||||
|
|
||||||
def create_player_entity(self):
|
def create_player_entity(self):
|
||||||
"""Crée une entité joueur."""
|
"""Crée une entité joueur."""
|
||||||
anim = Anim(0.5)
|
anim = Anim(0.5)
|
||||||
|
|
Loading…
Reference in a new issue