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
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.entity_manager.update(delta)
self.renderer.update(delta)
self.event_handler.update()
self.event_handler.update(delta)
self.event_sheduler.update()
self.dialogs_manager.update(delta)
self.sound_manager.update(delta)

View file

@ -116,7 +116,7 @@ class Entity:
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."""
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
initial_speed = math.sqrt(x**2+y**2)
x = x/initial_speed*self.max_speed
y = y/initial_speed*self.max_speed
x = x*delta/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

View file

@ -21,10 +21,10 @@ class EntityManager:
"""Définit l'entité donnée comme le joueur. Elle peut donc être controlée."""
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"""
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):
"""Met à jour toutes les entités enregistrées."""
@ -61,7 +61,6 @@ class EntityManager:
e.lock()
self.paused = True
def resume(self):
"""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():

View file

@ -98,7 +98,7 @@ class EventHandler:
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."""
window_size = display.get_window_size()
@ -203,13 +203,13 @@ class EventHandler:
if self.engine.entity_manager.player_entity_name:
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:
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:
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:
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:
self.engine.dialogs_manager.next_signal()

View file

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