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:
parent
afb2e2386f
commit
83d51f3e5e
|
@ -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,21 +27,22 @@ 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."""
|
||||||
for entity_name in list(self.entities.keys()):
|
if not self.paused:
|
||||||
entity = self.entities[entity_name]
|
for entity_name in list(self.entities.keys()):
|
||||||
entity.update(delta)
|
entity = self.entities[entity_name]
|
||||||
if entity.life_points == 0:
|
entity.update(delta)
|
||||||
self.entities.pop(entity_name)
|
if entity.life_points == 0:
|
||||||
|
self.entities.pop(entity_name)
|
||||||
|
|
||||||
if entity.brain is not None:
|
if entity.brain is not None:
|
||||||
entity.brain.update(delta)
|
entity.brain.update(delta)
|
||||||
|
|
||||||
if self.player_entity_name:
|
if self.player_entity_name:
|
||||||
player: Entity = self.get_by_name(self.player_entity_name)
|
player: Entity = self.get_by_name(self.player_entity_name)
|
||||||
if player.mouvements[0] != 0. or player.mouvements[1] != 0.:
|
if player.mouvements[0] != 0. or player.mouvements[1] != 0.:
|
||||||
player.link_animation("player_walking")
|
player.link_animation("player_walking")
|
||||||
else:
|
else:
|
||||||
player.link_animation("player_none")
|
player.link_animation("player_none")
|
||||||
|
|
||||||
def get_all_entities(self) -> list[Entity]:
|
def get_all_entities(self) -> list[Entity]:
|
||||||
"""Donne la liste de toutes les entités enregistrées."""
|
"""Donne la liste de toutes les entités enregistrées."""
|
||||||
|
@ -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()
|
Loading…
Reference in a new issue