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))

This commit is contained in:
Adastram 2024-01-11 09:53:44 +01:00
parent afb2e2386f
commit 83d51f3e5e

View file

@ -8,6 +8,7 @@ class EntityManager:
self.entities: dict[str:Entity] = {} self.entities: dict[str:Entity] = {}
self.player_entity_name = "" self.player_entity_name = ""
self.map_manager = map_manager self.map_manager = map_manager
self.paused = False
def register_entity(self, name: str) -> Entity: def register_entity(self, name: str) -> Entity:
"""Crée une entité et l'enregistre dans un dictionnaire.""" """Crée une entité et l'enregistre dans un dictionnaire."""
@ -26,6 +27,7 @@ class EntityManager:
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."""
if not self.paused:
for entity_name in list(self.entities.keys()): for entity_name in list(self.entities.keys()):
entity = self.entities[entity_name] entity = self.entities[entity_name]
entity.update(delta) entity.update(delta)
@ -49,3 +51,16 @@ class EntityManager:
def get_by_name(self, name: str) -> Entity: def get_by_name(self, name: str) -> Entity:
"""Donne l'entité avec le nom donné.""" """Donne l'entité avec le nom donné."""
return self.entities[name] 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()