X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Factors%2Forientatedsurf.py;h=284ac71f2e5779e48812b975e91e762fd47a6564;hb=b84add9e04e7a5ac7832cb97b0ff83586eb716fb;hp=5c8df654b8b7f827b0fab58ad01d34aefc0f8c61;hpb=663cf50f914ef479622e517463f4b03604c297c9;p=koperkapel.git diff --git a/koperkapel/actors/orientatedsurf.py b/koperkapel/actors/orientatedsurf.py index 5c8df65..284ac71 100644 --- a/koperkapel/actors/orientatedsurf.py +++ b/koperkapel/actors/orientatedsurf.py @@ -4,9 +4,12 @@ from pygame.transform import rotate from pgzero.actor import POS_TOPLEFT, ANCHOR_CENTER from .surf import SurfActor +from ..constants import TILE_SIZE + class OrientatedSurfActor(SurfActor): - def __init__(self, surf, pos=POS_TOPLEFT, anchor=ANCHOR_CENTER, angle=0, **kwargs): + def __init__(self, surf, pos=POS_TOPLEFT, anchor=ANCHOR_CENTER, angle=0, + **kwargs): self._handle_unexpected_kwargs(kwargs) self._angle = angle @@ -20,6 +23,9 @@ class OrientatedSurfActor(SurfActor): @angle.setter def angle(self, angle): + cur_anchor = self._anchor_value + if angle not in (self._angle, self._angle + 180, self._angle - 180): + self._anchor_value = (cur_anchor[1], cur_anchor[0]) self._angle = angle self._surf = self._orig_surf = rotate(self._base_surf, angle) @@ -33,3 +39,20 @@ class OrientatedSurfActor(SurfActor): self._base_surf = surf self._orig_surf = self._surf = rotate(surf, self._angle) self._update_pos() + + +class SelectableSurfActor(OrientatedSurfActor): + def __init__(self, seat, selected_seat): + self._selected = False + self._seat = seat + self._selected_seat = selected_seat + super().__init__(surf=self._seat, angle=0) + + @property + def selected(self): + return self._selected + + @selected.setter + def selected(self, value): + self._selected = value + self.surf = self._selected_seat if value else self._seat