Ajout d'un vrai delta time

This commit is contained in:
Yannis 2024-01-13 10:09:21 +01:00
parent 561934e4ef
commit e3ea7cbed1
3 changed files with 18 additions and 12 deletions

View file

@ -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."""

View file

@ -69,4 +69,4 @@ class EntityManager:
e.unlock()
self.paused = False
self.locked_before_pause = []
self.locked_before_pause = []

View file

@ -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)}",