2021-03-04 14:07:44 +01:00
|
|
|
from pygame.rect import Rect
|
|
|
|
|
2021-03-15 13:31:25 +01:00
|
|
|
from survival import SCREEN_WIDTH, SCREEN_HEIGHT
|
|
|
|
|
2021-03-04 14:07:44 +01:00
|
|
|
|
|
|
|
class Camera:
|
2021-03-15 13:31:25 +01:00
|
|
|
def __init__(self, width, height, window):
|
2021-03-04 14:07:44 +01:00
|
|
|
self.camera = Rect(0, 0, width, height)
|
|
|
|
self.width = width
|
|
|
|
self.height = height
|
2021-03-15 13:31:25 +01:00
|
|
|
self.window = window
|
|
|
|
|
|
|
|
def draw(self, image):
|
|
|
|
image.draw(self.window, self)
|
|
|
|
|
|
|
|
def apply(self, pos):
|
|
|
|
return pos[0] + self.camera.left, pos[1] + self.camera.top
|
|
|
|
|
|
|
|
def get_visible_area(self):
|
2021-03-15 14:10:19 +01:00
|
|
|
return Rect(-self.camera.left, -self.camera.top,
|
|
|
|
SCREEN_WIDTH - self.camera.left, SCREEN_HEIGHT - self.camera.top)
|
2021-03-04 14:07:44 +01:00
|
|
|
|
2021-03-15 13:31:25 +01:00
|
|
|
def update(self, target):
|
2021-03-28 18:05:52 +02:00
|
|
|
x = -target.position[0] + int(SCREEN_WIDTH / 2)
|
|
|
|
y = -target.position[1] + int(SCREEN_HEIGHT / 2)
|
2021-03-04 14:07:44 +01:00
|
|
|
|
2021-03-15 13:31:25 +01:00
|
|
|
x = min(0, x)
|
|
|
|
y = min(0, y)
|
|
|
|
x = max(-(self.width - SCREEN_WIDTH), x)
|
|
|
|
y = max(-(self.height - SCREEN_HEIGHT), y)
|
2021-03-04 14:07:44 +01:00
|
|
|
self.camera = Rect(x, y, self.width, self.height)
|