Implementation du delta time pour les entités

This commit is contained in:
Yannis 2024-01-13 10:24:05 +01:00
parent e3ea7cbed1
commit 46ca725a7e
6 changed files with 15 additions and 16 deletions

View file

@ -66,4 +66,4 @@ class WolfAI(MobAI):
# On fait avancer le loup quand il le doit # On fait avancer le loup quand il le doit
if self.comportment == 1: if self.comportment == 1:
self.entity.move(self.walk_x, self.walk_y, self.map_manager) self.entity.move(self.walk_x, self.walk_y, self.map_manager, delta)

View file

@ -60,7 +60,7 @@ class Engine:
self.camera.update() self.camera.update()
self.entity_manager.update(delta) self.entity_manager.update(delta)
self.renderer.update(delta) self.renderer.update(delta)
self.event_handler.update() self.event_handler.update(delta)
self.event_sheduler.update() self.event_sheduler.update()
self.dialogs_manager.update(delta) self.dialogs_manager.update(delta)
self.sound_manager.update(delta) self.sound_manager.update(delta)

View file

@ -116,7 +116,7 @@ class Entity:
return collision return collision
def move(self, x: float, y: float, map_manager: MapManager): def move(self, x: float, y: float, map_manager: MapManager, delta: float):
"""Fait bouger l'entité en tenant compte des collisions.""" """Fait bouger l'entité en tenant compte des collisions."""
if not self.locked: # Si l'entité n'est pas verrouillée on calcul le mouvement if not self.locked: # Si l'entité n'est pas verrouillée on calcul le mouvement
@ -131,8 +131,8 @@ class Entity:
# On normalise la vitesse # On normalise la vitesse
initial_speed = math.sqrt(x**2+y**2) initial_speed = math.sqrt(x**2+y**2)
x = x/initial_speed*self.max_speed x = x*delta/initial_speed*self.max_speed
y = y/initial_speed*self.max_speed y = y*delta/initial_speed*self.max_speed
# On simule le mouvement. Si on ne rencontre pas de collision, on applique le mouvement # On simule le mouvement. Si on ne rencontre pas de collision, on applique le mouvement

View file

@ -21,10 +21,10 @@ class EntityManager:
"""Définit l'entité donnée comme le joueur. Elle peut donc être controlée.""" """Définit l'entité donnée comme le joueur. Elle peut donc être controlée."""
self.player_entity_name = name self.player_entity_name = name
def move_player_controls(self, x: float, y: float): def move_player_controls(self, x: float, y: float, delta: float):
"""Bouge le joueur. X et y doivent être compris entre 0 et 1""" """Bouge le joueur. X et y doivent être compris entre 0 et 1"""
player: Entity = self.get_by_name(self.player_entity_name) player: Entity = self.get_by_name(self.player_entity_name)
player.move(x, y, self.map_manager) player.move(x, y, self.map_manager, delta)
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."""
@ -61,7 +61,6 @@ class EntityManager:
e.lock() e.lock()
self.paused = True self.paused = True
def resume(self): def resume(self):
"""Reprend les mouvement de toutes les entitées qui n'étaient pas lock avant l'appel de .pause()""" """Reprend les mouvement de toutes les entitées qui n'étaient pas lock avant l'appel de .pause()"""
for e in self.get_all_entities(): for e in self.get_all_entities():

View file

@ -98,7 +98,7 @@ class EventHandler:
return x_value, y_value return x_value, y_value
def update(self): def update(self, delta: float):
"""Vérifie s'il y a de nouvelles interactions et les traites.""" """Vérifie s'il y a de nouvelles interactions et les traites."""
window_size = display.get_window_size() window_size = display.get_window_size()
@ -203,13 +203,13 @@ class EventHandler:
if self.engine.entity_manager.player_entity_name: if self.engine.entity_manager.player_entity_name:
if K_RIGHT in self.key_pressed: if K_RIGHT in self.key_pressed:
self.engine.entity_manager.move_player_controls(1, 0) self.engine.entity_manager.move_player_controls(1, 0, delta)
if K_LEFT in self.key_pressed: if K_LEFT in self.key_pressed:
self.engine.entity_manager.move_player_controls(-1, 0) self.engine.entity_manager.move_player_controls(-1, 0, delta)
if K_UP in self.key_pressed: if K_UP in self.key_pressed:
self.engine.entity_manager.move_player_controls(0, -1) self.engine.entity_manager.move_player_controls(0, -1, delta)
if K_DOWN in self.key_pressed: if K_DOWN in self.key_pressed:
self.engine.entity_manager.move_player_controls(0, 1) self.engine.entity_manager.move_player_controls(0, 1, delta)
if K_SPACE in self.key_pressed: if K_SPACE in self.key_pressed:
self.engine.dialogs_manager.next_signal() self.engine.dialogs_manager.next_signal()

View file

@ -72,7 +72,7 @@ class Game(Engine):
player.collision_rect = [-6, -7, 6, 16] player.collision_rect = [-6, -7, 6, 16]
player.set_default_life(15) player.set_default_life(15)
player.max_speed = 1.1 player.max_speed = 64.0
self.entity_manager.set_player_entity("player") self.entity_manager.set_player_entity("player")
@ -95,7 +95,7 @@ class Game(Engine):
mob.collision_rect = [-15, -7, 12, 7] mob.collision_rect = [-15, -7, 12, 7]
mob.set_default_life(5) mob.set_default_life(5)
mob.max_speed = 1. mob.max_speed = 60.
mob.x, mob.y = 1600, 16 mob.x, mob.y = 1600, 16