From 83d51f3e5ed16f235c8b7c4708c49e02ff2a1dcb Mon Sep 17 00:00:00 2001 From: adastram Date: Thu, 11 Jan 2024 09:53:44 +0100 Subject: [PATCH] Added .pause() and .resume() functions (Pause the game logic (Entites moving and damage) and lock player (Player movements doesn't seems to be affected by the pause of the update loop)) --- src/engine/entity_manager.py | 41 ++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/src/engine/entity_manager.py b/src/engine/entity_manager.py index 72e59a6..45fa572 100644 --- a/src/engine/entity_manager.py +++ b/src/engine/entity_manager.py @@ -8,6 +8,7 @@ class EntityManager: self.entities: dict[str:Entity] = {} self.player_entity_name = "" self.map_manager = map_manager + self.paused = False def register_entity(self, name: str) -> Entity: """Crée une entité et l'enregistre dans un dictionnaire.""" @@ -26,21 +27,22 @@ class EntityManager: def update(self, delta: float): """Met à jour toutes les entités enregistrées.""" - for entity_name in list(self.entities.keys()): - entity = self.entities[entity_name] - entity.update(delta) - if entity.life_points == 0: - self.entities.pop(entity_name) + if not self.paused: + for entity_name in list(self.entities.keys()): + entity = self.entities[entity_name] + entity.update(delta) + if entity.life_points == 0: + self.entities.pop(entity_name) - if entity.brain is not None: - entity.brain.update(delta) + if entity.brain is not None: + entity.brain.update(delta) - if self.player_entity_name: - player: Entity = self.get_by_name(self.player_entity_name) - if player.mouvements[0] != 0. or player.mouvements[1] != 0.: - player.link_animation("player_walking") - else: - player.link_animation("player_none") + if self.player_entity_name: + player: Entity = self.get_by_name(self.player_entity_name) + if player.mouvements[0] != 0. or player.mouvements[1] != 0.: + player.link_animation("player_walking") + else: + player.link_animation("player_none") def get_all_entities(self) -> list[Entity]: """Donne la liste de toutes les entités enregistrées.""" @@ -49,3 +51,16 @@ class EntityManager: def get_by_name(self, name: str) -> Entity: """Donne l'entité avec le nom donné.""" return self.entities[name] + + def pause(self): + self.paused = True + player: Entity = self.get_by_name(self.player_entity_name) + if not player.locked: + player.lock() + + + def resume(self): + self.paused = False + player: Entity = self.get_by_name(self.player_entity_name) + if player.locked: + player.unlock() \ No newline at end of file