5c8df654b8b7f827b0fab58ad01d34aefc0f8c61
[koperkapel.git] / koperkapel / actors / orientatedsurf.py
1 """ Actor that takes a surface. """
2
3 from pygame.transform import rotate
4 from pgzero.actor import POS_TOPLEFT, ANCHOR_CENTER
5
6 from .surf import SurfActor
7
8 class OrientatedSurfActor(SurfActor):
9     def __init__(self, surf, pos=POS_TOPLEFT, anchor=ANCHOR_CENTER, angle=0, **kwargs):
10         self._handle_unexpected_kwargs(kwargs)
11
12         self._angle = angle
13         self._base_surf = surf
14         super().__init__(surf, pos, anchor)
15         self._init_position(pos, anchor, **kwargs)
16
17     @property
18     def angle(self):
19         return self._angle
20
21     @angle.setter
22     def angle(self, angle):
23         self._angle = angle
24         self._surf = self._orig_surf = rotate(self._base_surf, angle)
25
26     @property
27     def surf(self):
28         """ The original surface displaying the actor. """
29         return self._orig_surf
30
31     @surf.setter
32     def surf(self, surf):
33         self._base_surf = surf
34         self._orig_surf = self._surf = rotate(surf, self._angle)
35         self._update_pos()