import pygame
class Camera:
stage = None
resolution = None
focus = None
camerapos = None
bbox = None
def __init__(self, stage):
self.stage = stage
self.resolution = pygame.display.get_surface().get_size()
self.camerapos = [0,0]
def setFocus(self, obj):
self.focus = obj
def clearFocus(self):
self.focus = None
def setPosition(self, x, y):
self.camerapos = [x, y]
def setBbox(self, bbox):
self.bbox = bbox
def clearBbox(self):
self.bbox = None
def update(self):
if self.focus:
self.camerapos = [self.focus.position[0] - self.resolution[0]/2,
self.focus.position[1] - self.resolution[1]/4]
if self.bbox:
if self.bbox.height < self.resolution[1] or self.camerapos[1] < self.bbox.top:
self.camerapos[1] = self.bbox.top
elif self.camerapos[1] + self.resolution[1] > self.bbox.bottom:
self.camerapos[1] = self.bbox.bottom - self.resolution[1]
if self.bbox.width < self.resolution[0] or self.camerapos[0] < self.bbox.left:
self.camerapos[0] = self.bbox.left
elif self.camerapos[0] + self.resolution[0] > self.bbox.right:
self.camerapos[0] = self.bbox.right - self.resolution[0]
self.stage.moveTo(self.camerapos[0], self.camerapos[1])