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:
Adastram 2024-01-11 10:29:43 +01:00
parent 15565c6712
commit 1f8444bc0b

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.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,7 +28,6 @@ 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)
@ -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()