Amélioration de l'engine et ajout d'éléments de gameplay #20
|
@ -29,7 +29,7 @@ class Engine:
|
||||||
self.event_handler = EventHandler(self)
|
self.event_handler = EventHandler(self)
|
||||||
self.map_manager = MapManager()
|
self.map_manager = MapManager()
|
||||||
self.camera = Camera()
|
self.camera = Camera()
|
||||||
self.entity_manager = EntityManager()
|
self.entity_manager = EntityManager(self.map_manager)
|
||||||
self.boss_fight_manager = BossFightManager(self)
|
self.boss_fight_manager = BossFightManager(self)
|
||||||
|
|
||||||
def loop(self):
|
def loop(self):
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
from src.engine.entity import Entity
|
from src.engine.entity import Entity
|
||||||
|
from src.engine.map_manager import MapManager
|
||||||
|
|
||||||
|
|
||||||
class EntityManager:
|
class EntityManager:
|
||||||
"""Classe chargée de gérer les entités."""
|
"""Classe chargée de gérer les entités."""
|
||||||
def __init__(self):
|
def __init__(self, map_manager: MapManager):
|
||||||
self.entities: dict[str:Entity] = {}
|
self.entities: dict[str:Entity] = {}
|
||||||
|
self.player_entity_name = ""
|
||||||
|
self.map_manager = map_manager
|
||||||
|
|
||||||
def register_entity(self, name: str):
|
def register_entity(self, name: str):
|
||||||
"""Crée une entité et l'enregistre dans un dictionnaire."""
|
"""Crée une entité et l'enregistre dans un dictionnaire."""
|
||||||
|
@ -12,6 +15,15 @@ class EntityManager:
|
||||||
self.entities[name] = entity
|
self.entities[name] = entity
|
||||||
return entity
|
return entity
|
||||||
|
|
||||||
|
def set_player_entity(self, name: str):
|
||||||
|
"""Définit l'entité donnée comme le joueur. Elle peut donc être controlée."""
|
||||||
|
self.player_entity_name = name
|
||||||
|
|
||||||
|
def move_player_controls(self, x: float, y: float):
|
||||||
|
"""Bouge le joueur. X et y doivent être compris entre 0 et 1"""
|
||||||
|
player: Entity = self.get_by_name(self.player_entity_name)
|
||||||
|
player.move(x, y, self.map_manager)
|
||||||
|
|
||||||
def update(self, delta: float):
|
def update(self, delta: float):
|
||||||
"""Met à jour toutes les entités enregistrées."""
|
"""Met à jour toutes les entités enregistrées."""
|
||||||
for entity_name in list(self.entities.keys()):
|
for entity_name in list(self.entities.keys()):
|
||||||
|
|
|
@ -22,24 +22,20 @@ class EventHandler:
|
||||||
elif e.type == KEYUP:
|
elif e.type == KEYUP:
|
||||||
self.key_pressed.remove(e.key)
|
self.key_pressed.remove(e.key)
|
||||||
|
|
||||||
player = self.engine.entity_manager.get_by_name("player")
|
if self.engine.entity_manager.player_entity_name:
|
||||||
player.link_animation("player_none")
|
if K_RIGHT in self.key_pressed:
|
||||||
if K_RIGHT in self.key_pressed:
|
self.engine.entity_manager.move_player_controls(1, 0)
|
||||||
player.move(2, 0, self.engine.map_manager)
|
if K_LEFT in self.key_pressed:
|
||||||
player.link_animation("player_walking")
|
self.engine.entity_manager.move_player_controls(-1, 0)
|
||||||
if K_LEFT in self.key_pressed:
|
if K_UP in self.key_pressed:
|
||||||
player.move(-2, 0, self.engine.map_manager)
|
self.engine.entity_manager.move_player_controls(0, -1)
|
||||||
player.link_animation("player_walking")
|
if K_DOWN in self.key_pressed:
|
||||||
if K_UP in self.key_pressed:
|
self.engine.entity_manager.move_player_controls(0, 1)
|
||||||
player.move(0, -2, self.engine.map_manager)
|
if K_l in self.key_pressed:
|
||||||
player.link_animation("player_walking")
|
self.engine.entity_manager.get_by_name("player").take_damages(1)
|
||||||
if K_DOWN in self.key_pressed:
|
|
||||||
player.move(0, 2, self.engine.map_manager)
|
|
||||||
player.link_animation("player_walking")
|
|
||||||
if K_x in self.key_pressed:
|
if K_x in self.key_pressed:
|
||||||
self.engine.camera.target_zoom *= 1.01
|
self.engine.camera.target_zoom *= 1.01
|
||||||
if K_c in self.key_pressed:
|
if K_c in self.key_pressed:
|
||||||
self.engine.camera.target_zoom *= 0.99
|
self.engine.camera.target_zoom *= 0.99
|
||||||
if K_l in self.key_pressed:
|
|
||||||
player.take_damages(1)
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,9 @@ class Game(Engine):
|
||||||
player.collision_rect = [-6, -7, 6, 16]
|
player.collision_rect = [-6, -7, 6, 16]
|
||||||
|
|
||||||
player.set_default_life(10)
|
player.set_default_life(10)
|
||||||
|
player.max_speed = 2.
|
||||||
|
|
||||||
|
self.entity_manager.set_player_entity("player")
|
||||||
|
|
||||||
self.camera.follow_entity(player)
|
self.camera.follow_entity(player)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue