nsi-rpg/src/engine/camera.py

34 lines
1 KiB
Python
Raw Normal View History

from src.engine.entity import Entity
2023-12-23 12:06:45 +00:00
2023-12-22 16:09:17 +00:00
class Camera:
def __init__(self):
self.x = 0
self.y = 0
self.zoom = 1.
2023-12-23 08:24:58 +00:00
# Variables utilisées pour le scrolling
self.target_x = self.x
self.target_y = self.y
self.target_zoom = self.zoom
self.smoothness = 20.
2023-12-23 12:06:45 +00:00
self.followed_entity: Entity | None = None
2023-12-23 08:24:58 +00:00
def update(self):
"""Met à jour la caméra. Permet, par exemple, de faire le scrolling."""
2023-12-23 12:06:45 +00:00
# Si on suit une entité, on met à jour les coordonnées de suivi
if self.followed_entity is not None:
self.target_x = self.followed_entity.x
self.target_y = self.followed_entity.y
2023-12-23 08:24:58 +00:00
self.x += (self.target_x - self.x) / self.smoothness
self.y += (self.target_y - self.y) / self.smoothness
self.zoom += (self.target_zoom - self.zoom) / self.smoothness
2023-12-23 12:06:45 +00:00
def follow_entity(self, entity: Entity | None):
"""Active le suivit de l'entité donnée. Mettre `None` pour retirer le suivit."""
2023-12-23 12:06:45 +00:00
self.followed_entity = entity