class Viewport(object): def __init__(self, w, h, worldW, worldH): self.position = Position(0,0) self.worldW = worldW self.worldH = worldH self.redraw(w,h) def getX(self): return self.position.getX() def getY(self): return self.position.getY() def getX2(self): return self.position.getX() + self.w def getY2(self): return self.position.getY() + self.h def redraw(self, w, h): self.w = w self.h = h self.focusX = w/2 self.focusY = h/2 self.maxX = self.worldW - self.w self.maxY = self.worldH - self.h def move(self, centerx, centery): minx = self.position.x + self.focusX miny = self.position.y + self.focusY if centerx < minx: self.position.x = self.position.x - (minx-centerx) if centery < miny: self.position.y = self.position.y - (miny-centery) if centerx > minx: self.position.x = self.position.x + (centerx - minx) if centery > miny: self.position.y = self.position.y + (centery - miny) self.clamp() def clamp(self): if self.position.x < 0: self.position.x = 0 if self.position.y < 0: self.position.y = 0 if self.position.x > self.maxX: self.position.x = self.maxX if self.position.y > self.maxY: self.position.y = self.maxY
def __init__(self, w, h, worldW, worldH): self.position = Position(0,0) self.worldW = worldW self.worldH = worldH self.redraw(w,h)