From 7c203a5d363b118b79e74de1859fe16e801a24d3 Mon Sep 17 00:00:00 2001 From: yannis300307 Date: Fri, 29 Dec 2023 19:12:31 +0100 Subject: [PATCH] Modification des mouvements du joueur --- src/engine/engine.py | 2 +- src/engine/entity_manager.py | 14 +++++++++++++- src/engine/event_handler.py | 28 ++++++++++++---------------- src/main.py | 3 +++ 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/engine/engine.py b/src/engine/engine.py index 034b6b1..2d1dc8d 100644 --- a/src/engine/engine.py +++ b/src/engine/engine.py @@ -29,7 +29,7 @@ class Engine: self.event_handler = EventHandler(self) self.map_manager = MapManager() self.camera = Camera() - self.entity_manager = EntityManager() + self.entity_manager = EntityManager(self.map_manager) self.boss_fight_manager = BossFightManager(self) def loop(self): diff --git a/src/engine/entity_manager.py b/src/engine/entity_manager.py index 425897c..070bf20 100644 --- a/src/engine/entity_manager.py +++ b/src/engine/entity_manager.py @@ -1,10 +1,13 @@ from src.engine.entity import Entity +from src.engine.map_manager import MapManager class EntityManager: """Classe chargée de gérer les entités.""" - def __init__(self): + def __init__(self, map_manager: MapManager): self.entities: dict[str:Entity] = {} + self.player_entity_name = "" + self.map_manager = map_manager def register_entity(self, name: str): """Crée une entité et l'enregistre dans un dictionnaire.""" @@ -12,6 +15,15 @@ class EntityManager: self.entities[name] = 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): """Met à jour toutes les entités enregistrées.""" for entity_name in list(self.entities.keys()): diff --git a/src/engine/event_handler.py b/src/engine/event_handler.py index de045a6..79dc586 100644 --- a/src/engine/event_handler.py +++ b/src/engine/event_handler.py @@ -22,24 +22,20 @@ class EventHandler: elif e.type == KEYUP: self.key_pressed.remove(e.key) - player = self.engine.entity_manager.get_by_name("player") - player.link_animation("player_none") - if K_RIGHT in self.key_pressed: - player.move(2, 0, self.engine.map_manager) - player.link_animation("player_walking") - if K_LEFT in self.key_pressed: - player.move(-2, 0, self.engine.map_manager) - player.link_animation("player_walking") - if K_UP in self.key_pressed: - player.move(0, -2, self.engine.map_manager) - player.link_animation("player_walking") - if K_DOWN in self.key_pressed: - player.move(0, 2, self.engine.map_manager) - player.link_animation("player_walking") + if self.engine.entity_manager.player_entity_name: + if K_RIGHT in self.key_pressed: + self.engine.entity_manager.move_player_controls(1, 0) + if K_LEFT in self.key_pressed: + self.engine.entity_manager.move_player_controls(-1, 0) + if K_UP in self.key_pressed: + self.engine.entity_manager.move_player_controls(0, -1) + if K_DOWN in self.key_pressed: + self.engine.entity_manager.move_player_controls(0, 1) + if K_l in self.key_pressed: + self.engine.entity_manager.get_by_name("player").take_damages(1) + if K_x in self.key_pressed: self.engine.camera.target_zoom *= 1.01 if K_c in self.key_pressed: self.engine.camera.target_zoom *= 0.99 - if K_l in self.key_pressed: - player.take_damages(1) diff --git a/src/main.py b/src/main.py index 9319668..2efa19c 100644 --- a/src/main.py +++ b/src/main.py @@ -34,6 +34,9 @@ class Game(Engine): player.collision_rect = [-6, -7, 6, 16] player.set_default_life(10) + player.max_speed = 2. + + self.entity_manager.set_player_entity("player") self.camera.follow_entity(player)