Added .lock() and .unlock() entity functions (Prevent them from moving)

This commit is contained in:
Adastram 2024-01-11 09:51:29 +01:00
parent 197a4ae7dc
commit e2a97c65fd

View file

@ -11,6 +11,8 @@ class Entity:
self.x = 8 self.x = 8
self.y = 8 self.y = 8
self.locked = False
self.direction = 0 # 0 : tourné vers la droite (ou sens par défaut), 1 : tourné vers la gauche (ou retourné) self.direction = 0 # 0 : tourné vers la droite (ou sens par défaut), 1 : tourné vers la gauche (ou retourné)
# Variables utilisées pour détecter les mouvements # Variables utilisées pour détecter les mouvements
@ -131,38 +133,46 @@ class Entity:
y = y/initial_speed*self.max_speed y = y/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
if not self.get_collisions(self.x + x, self.y, map_manager): if not self.locked: # Si l'entité n'est pas verrouillée on applique le movement
self.x += x if not self.get_collisions(self.x + x, self.y, map_manager):
else: self.x += x
# Si on a une collision, on avance pixel par pixel jusqu'à atteindre la collision
i = 0
if x > 0:
while not self.get_collisions(self.x + i, self.y, map_manager):
i += 1
i -= 1
else: else:
while not self.get_collisions(self.x + i, self.y, map_manager): # Si on a une collision, on avance pixel par pixel jusqu'à atteindre la collision
i = 0
if x > 0:
while not self.get_collisions(self.x + i, self.y, map_manager):
i += 1
i -= 1 i -= 1
i += 1 else:
while not self.get_collisions(self.x + i, self.y, map_manager):
self.x += i i -= 1
# On répète le procédé avec l'ordonnée
if not self.get_collisions(self.x, self.y + y, map_manager):
self.y += y
else:
i = 0
if y > 0:
while not self.get_collisions(self.x, self.y + i, map_manager):
i += 1 i += 1
i -= 1
else:
while not self.get_collisions(self.x, self.y + i, map_manager):
i -= 1
i += 1
self.y += i self.x += i
# On répète le procédé avec l'ordonnée
if not self.get_collisions(self.x, self.y + y, map_manager):
self.y += y
else:
i = 0
if y > 0:
while not self.get_collisions(self.x, self.y + i, map_manager):
i += 1
i -= 1
else:
while not self.get_collisions(self.x, self.y + i, map_manager):
i -= 1
i += 1
self.y += i
def link_animation(self, name: str): def link_animation(self, name: str):
"""Met à jour l'animation en cours de l'entité.""" """Met à jour l'animation en cours de l'entité."""
self.animation_name = name self.animation_name = name
def lock(self):
self.locked = True
def unlock(self):
self.locked = False