Edited .pause() function to lock all unlocked entity instead of blocking update function, and .resume() to unlock only non-locked entity before pause
This commit is contained in:
parent
15565c6712
commit
1f8444bc0b
|
@ -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.locked_before_pause: list[Entity] = []
|
||||||
self.paused = False
|
self.paused = False
|
||||||
|
|
||||||
def register_entity(self, name: str) -> Entity:
|
def register_entity(self, name: str) -> Entity:
|
||||||
|
@ -27,22 +28,21 @@ 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)
|
if entity.life_points == 0:
|
||||||
if entity.life_points == 0:
|
self.entities.pop(entity_name)
|
||||||
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."""
|
||||||
|
@ -53,14 +53,18 @@ class EntityManager:
|
||||||
return self.entities[name]
|
return self.entities[name]
|
||||||
|
|
||||||
def pause(self):
|
def pause(self):
|
||||||
|
for e in self.get_all_entities():
|
||||||
|
if e.locked:
|
||||||
|
self.locked_before_pause.append(e)
|
||||||
|
else:
|
||||||
|
e.lock()
|
||||||
self.paused = True
|
self.paused = True
|
||||||
player: Entity = self.get_by_name(self.player_entity_name)
|
|
||||||
if not player.locked:
|
|
||||||
player.lock()
|
|
||||||
|
|
||||||
|
|
||||||
def resume(self):
|
def resume(self):
|
||||||
|
for e in self.get_all_entities():
|
||||||
|
if not e in self.locked_before_pause:
|
||||||
|
e.unlock()
|
||||||
|
|
||||||
self.paused = False
|
self.paused = False
|
||||||
player: Entity = self.get_by_name(self.player_entity_name)
|
self.locked_before_pause = []
|
||||||
if player.locked:
|
|
||||||
player.unlock()
|
|
Loading…
Reference in a new issue