class StaticSprite(pygame.sprite.Sprite):
    def __init__(self, file, position, layer, alpha, reuse):
        super(StaticSprite, self).__init__()

        self.reuse = reuse
        self.file = file
        self.position = position
        self._layer = layer
        self.alpha = alpha

        self.arrangeRectangle()

    @property
    def file(self):
        return self._file

    @file.setter
    def file(self, file):
        self._image = ResourceManager().getImage(file, reuse = self._reuse)
        self._file = file

    @property
    def position(self):
        return tuple(self._position)

    @position.setter
    def position(self, position):
        self._position = Vector2(position)

    @property
    def _layer(self):
        return self.layer

    @_layer.setter
    def _layer(self, layer):
        self.layer = LayerHandler().handle(layer)
        for group in self.groups():
            group.change_layer(self, layer)

    @property
    def alpha(self):
        return self._image.get_alpha()

    @alpha.setter
    def alpha(self, alpha):
        self._image.set_alpha(AlphaHandler().handle(alpha))

    @property
    def reuse(self):
        return self._reuse

    @reuse.setter
    def reuse(self, reuse):
        self._reuse = reuse

    @property
    def image(self):
        return self._image

    @property
    def rect(self):
        return self._rect

    def arrangeRectangle(self):
        self._rect = self._image.get_rect(center=tuple(self._position))

    def arrangePosition(self):
        self._position = Vector2(self._rect.center)