+ # Player position in viewpoint coordinates
+ check_point = (sprite_pos[0] + TILE_SIZE / 2,
+ sprite_pos[1] + TILE_SIZE / 2)
+ true_point = self.to_parent(*check_point)
+ if not self.included(true_point):
+ # Scroll ourselves
+ while true_point[0] >= self.view.size[0] - TILE_SIZE:
+ self.pos = (self.pos[0] - 1.5 * TILE_SIZE, self.pos[1])
+ true_point = self.to_parent(*check_point)
+ while true_point[0] < TILE_SIZE:
+ self.pos = (self.pos[0] + 1.5 * TILE_SIZE, self.pos[1])
+ true_point = self.to_parent(*check_point)
+ while true_point[1] >= self.view.size[1] - TILE_SIZE:
+ self.pos = (self.pos[0], self.pos[1] - 1.5 * TILE_SIZE)
+ true_point = self.to_parent(*check_point)
+ while true_point[1] < TILE_SIZE:
+ self.pos = (self.pos[0], self.pos[1] + 1.5 * TILE_SIZE)
+ true_point = self.to_parent(*check_point)
+
+ def included(self, point):
+ if point[0] < TILE_SIZE:
+ return False
+ if point[0] >= self.view.pos[0] - TILE_SIZE:
+ return False
+ if point[1] < TILE_SIZE:
+ return False
+ if point[1] >= self.view.pos[1] - TILE_SIZE:
+ return False