예제 #1
0
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"
        )
예제 #2
0
 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)
예제 #3
0
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)
예제 #4
0
    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()
예제 #5
0
    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()
예제 #6
0
 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
예제 #7
0
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)