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