def __init__(self, object_list: dict, x=0, y=0, max_speed=200, acceleration=250, friction=400):
        self.pos = Vector2.new(x, y)
        self.vel = Vector2()
        self.max_speed = max_speed
        self.acceleration = acceleration
        self.friction = friction
        self.rect = geometry.Rectangle(x, y, 40, 40, color=(230, 50, 50))
        self.jumped = False
        self.teleported = False
        self.alive = True
        self.object_list = object_list
        self.died = BindableEvent()

        self.connection_on_died = self.died.connect(self.on_died)
        self.connection_on_space = InputHandler.input_began.connect(self.on_space)
 def absolute_pos(self) -> Vector2:
     (x, y) = self.parent.absolute_size.unpack(
     ) if self.parent else pygame.display.get_surface().get_size()
     return self.pos.offset + self.pos.scale * Vector2.new(
         x, y) - self.absolute_size * self.anchor_point
 def absolute_size(self) -> Vector2:
     (x, y) = self.parent.absolute_size.unpack(
     ) if self.parent else pygame.display.get_surface().get_size()
     return self.size.offset + self.size.scale * Vector2.new(x, y)