diff --git a/src/engine/engine.py b/src/engine/engine.py index 1aa6c61..70732ab 100644 --- a/src/engine/engine.py +++ b/src/engine/engine.py @@ -1,3 +1,5 @@ +import time + from src.engine.boss_fight_manager import BossFightManager from src.engine.camera import Camera from src.engine.dialogs_manager import DialogsManager @@ -24,8 +26,6 @@ class Engine: # Etat courant du jeu self.game_state = GameState.NORMAL - self.clock = pygame.time.Clock() - self.running = False # Composants du moteur de jeu @@ -44,20 +44,26 @@ class Engine: """Fonction à lancer au début du programme et qui va lancer les updates dans une boucle. Attend jusqu'à la fin du jeu.""" self.running = True - while self.running: - self.update() - self.clock.tick(60.) - def update(self): + delta = 1. # Le delta est le temps depuis la dernière image + last_time = time.time_ns()/10E8 + while self.running: + self.update(delta) + + new_time = time.time_ns()/10E8 + delta = new_time-last_time + last_time = new_time + + def update(self, delta: float): """Fonction qui regroupe toutes les updates des composants. Elle permet de mettre à jour le jeu quand on l'appelle.""" self.camera.update() - self.entity_manager.update(0.016666666) - self.renderer.update(0.016666666) + self.entity_manager.update(delta) + self.renderer.update(delta) self.event_handler.update() self.event_sheduler.update() - self.dialogs_manager.update(0.016666666) - self.sound_manager.update(1/60) + self.dialogs_manager.update(delta) + self.sound_manager.update(delta) def stop(self): """Arrête le programme.""" diff --git a/src/engine/entity_manager.py b/src/engine/entity_manager.py index 6b45414..1744339 100644 --- a/src/engine/entity_manager.py +++ b/src/engine/entity_manager.py @@ -69,4 +69,4 @@ class EntityManager: e.unlock() self.paused = False - self.locked_before_pause = [] \ No newline at end of file + self.locked_before_pause = [] diff --git a/src/engine/renderer.py b/src/engine/renderer.py index ebfbd33..d6a3746 100644 --- a/src/engine/renderer.py +++ b/src/engine/renderer.py @@ -172,7 +172,7 @@ class Renderer: # Conteur de FPS en mode DEBUG if self.engine.DEBUG_MODE: - self.window.blit(font.SysFont("Arial", 20).render(f"FPS: {round(self.engine.clock.get_fps())}, Game Status: {'Paused' if self.engine.entity_manager.paused else 'Playing'}", True, (255, 0, 0)), + self.window.blit(font.SysFont("Arial", 20).render(f"FPS: {round(1/delta if delta else 1)}, Game Status: {'Paused' if self.engine.entity_manager.paused else 'Playing'}", True, (255, 0, 0)), (0, 0)) player = self.engine.entity_manager.get_by_name('player') self.window.blit(font.SysFont("Arial", 20).render(f"X: {round(player.x, 2)} Y:{round(player.y, 2)}",