class Entity(PygineObject): def __init__(self, x=0, y=0, width=1, height=1): super(Entity, self).__init__(x, y, width, height) self.color = Color.WHITE self.layer = 0 self.remove = False self.__bounds_that_actually_draw_correctly = Rectangle( self.x, self.y, self.width, self.height, self.color, 2) def set_color(self, color): self.color = color self.__bounds_that_actually_draw_correctly.color = color def set_location(self, x, y): super(Entity, self).set_location(x, y) self.__bounds_that_actually_draw_correctly.set_location(self.x, self.y) def update(self, delta_time, scene_data): raise NotImplementedError( "A class that inherits Entity did not implement the update(delta_time, scene_data) method" ) def _draw_bounds(self, surface, camera_type): self.__bounds_that_actually_draw_correctly.draw(surface, camera_type) def draw(self, surface): raise NotImplementedError( "A class that inherits Entity did not implement the draw(surface) method" )
def __init__(self, x=0, y=0, width=1, height=1): super(Entity, self).__init__(x, y, width, height) self.color = Color.WHITE self.layer = 0 self.remove = False self.__bounds_that_actually_draw_correctly = Rectangle( self.x, self.y, self.width, self.height, self.color, 2)
class Slide(Transition): def __init__(self): super(Slide, self).__init__(1000, 5000) self.first_half_complete = False self.total = 8 self.stagger_height = Camera.BOUNDS.height / self.total self.rectangle = Rectangle(0, 0, Camera.BOUNDS.width * 2, self.stagger_height, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(0, self.stagger_height * i, Camera.BOUNDS.width * 2, self.stagger_height, Color.BLACK)) self.reset() def reset(self): self.speed = self.default_speed self.done = False self.first_half_complete = False for i in range(len(self.rectangles)): self.rectangles[i].set_location( -self.rectangle.width - i * self.stagger_height, self.rectangles[i].y) def update(self, delta_time): if self.done: return if self.rectangles[len(self.rectangles) - 1].x + self.rectangle.width > Camera.BOUNDS.width: self.first_half_complete = True if self.first_half_complete and self.rectangles[ len(self.rectangles) - 1].x > Camera.BOUNDS.width: self.rectangle.set_location(Camera.BOUNDS.width, self.rectangle.y) self.done = True for rectangle in self.rectangles: rectangle.set_location(rectangle.x + self.speed * delta_time, rectangle.y) self.speed += self.acceleration * delta_time def draw(self, surface): for rectangle in self.rectangles: rectangle.draw(surface, CameraType.STATIC)
def __init__(self): super(Slide, self).__init__(1000, 5000) self.first_half_complete = False self.total = 8 self.stagger_height = Camera.BOUNDS.height / self.total self.rectangle = Rectangle(0, 0, Camera.BOUNDS.width * 2, self.stagger_height, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(0, self.stagger_height * i, Camera.BOUNDS.width * 2, self.stagger_height, Color.BLACK)) self.reset()
def __init__(self, type): super(Cage, self).__init__(500, 100) self.type = type self.total = 8 self.stagger_width = Camera.BOUNDS.width / self.total if self.type == TransitionType.CAGE_CLOSE: self.rectangle = Rectangle(0, -Camera.BOUNDS.height * 3, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(self.stagger_width * i, -Camera.BOUNDS.height * 3, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK)) elif self.type == TransitionType.CAGE_OPEN: self.rectangle = Rectangle(0, 0, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(self.stagger_width * i, 0, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK)) self.reset()
def __init__(self, x, y, beans=50): super(Boat, self).__init__(x, y, 83, 16, 50) self.beans = beans self.playbounds = Rectangle(0, 16 * 3, Camera.BOUNDS.width, Camera.BOUNDS.height - 16 * 3) self.sprite = Sprite(x - 16, y - 48, SpriteType.BOAT) self.shadow = Sprite(x - 16 - 16, y - 16, SpriteType.BOAT_SHADOW) self.blinks = 5 self.invis_duration = 1600 self.invis_timer = Timer(self.invis_duration) self.blink_timer = Timer(self.invis_duration / self.blinks / 2) self.damaged = False self.flashing = False self.dead = False
class Cage(Transition): def __init__(self, type): super(Cage, self).__init__(500, 100) self.type = type self.total = 8 self.stagger_width = Camera.BOUNDS.width / self.total if self.type == TransitionType.CAGE_CLOSE: self.rectangle = Rectangle(0, -Camera.BOUNDS.height * 3, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(self.stagger_width * i, -Camera.BOUNDS.height * 3, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK)) elif self.type == TransitionType.CAGE_OPEN: self.rectangle = Rectangle(0, 0, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK) self.rectangles = [self.rectangle] for i in range(1, self.total): self.rectangles.append( Rectangle(self.stagger_width * i, 0, self.stagger_width, Camera.BOUNDS.height * 3, Color.BLACK)) self.reset() def reset(self): self.speed = self.default_speed self.done = False for i in range(len(self.rectangles)): if self.type == TransitionType.CAGE_CLOSE: self.rectangles[i].set_location( self.rectangles[i].x, -self.rectangle.height - i * self.stagger_width) elif self.type == TransitionType.CAGE_OPEN: self.rectangles[i].set_location(self.rectangles[i].x, -i * self.stagger_width) def update(self, delta_time): if self.done: return if self.type == TransitionType.CAGE_CLOSE: if self.rectangle.y + Camera.BOUNDS.height > Camera.BOUNDS.height: self.rectangle.set_location(self.rectangle.x, -64) self.done = True for rectangle in self.rectangles: rectangle.set_location(rectangle.x, rectangle.y + self.speed * delta_time) elif self.type == TransitionType.CAGE_OPEN: if self.rectangles[len(self.rectangles) - 1].y > Camera.BOUNDS.height: self.done = True for rectangle in self.rectangles: rectangle.set_location(rectangle.x, rectangle.y + self.speed * delta_time) self.speed += self.acceleration * delta_time def draw(self, surface): for rectangle in self.rectangles: rectangle.draw(surface, CameraType.STATIC)