コード例 #1
0
class DemoRenderable(Renderable):
    def __init__(self, f):
        self.f = pygame.image.load(f)
        self._position = Position()

        self.logger = logging.getLogger(__name__)

    @property
    def surface(self):
        return self.f

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

    def handle_keypressed(self, event):
        if event[pygame.K_UP]:
            self.logger.info("KEYDOWN UP")
            self._position.shift(0, -1)
        if event[pygame.K_DOWN]:
            self.logger.info("KEYDOWN DOWN")
            self._position.shift(0, 1)
        if event[pygame.K_RIGHT]:
            self.logger.info("KEYDOWN RIGHT")
            self._position.shift(1, 0)
        if event[pygame.K_LEFT]:
            self.logger.info("KEYDOWN LEFT")
            self._position.shift(-1, 0)
コード例 #2
0
def test_layer_scaling():
    layer: Layer = Layer(motion_scale=(2, -2))
    dr = DemoRenderable(pygame.surface.Surface((10, 10)))

    ms = MockSurface((-10, 10))

    layer.add_renderable(dr)
    layer.blit(Position(5, 5), ms)
コード例 #3
0
ファイル: mixins.py プロジェクト: afrasier/python-2d-engine
    def handle_click(self, event: pygame.event.Event) -> bool:
        """
        Function which takes a click event as a parameter, checks if the position falls within the object's surface
        If the click hits this item, call the internal child implementation for __handle_click

        Returns true or false if the click was handled by this object; allowing for differing event consumption.
        """
        if self.position_intersects(Position(*event.pos)):
            self.__handle_click(event)
            return True
        return False
コード例 #4
0
ファイル: mixins.py プロジェクト: afrasier/python-2d-engine
    def handle_mousemove(self, event: pygame.event.Event) -> bool:
        """
        Function which takes a mouse move event as a parameter, checks if the position falls within the object's surface
        If the mousemove is in the region, update the internal hover state

        Returns true or false if the click was handled by this object; allowing for differing event consumption.
        """
        if self.position_intersects(Position(*event.pos)):
            self.__is_hovered = True
            self.__time_hovered = datetime.now()
            return True
        return False
コード例 #5
0
def test_position_shift():
    p = Position()
    p.shift(1, 1)

    assert p.x == 1
    assert p.y == 1

    p.shift(-2, -1)
    assert p.x == -1
    assert p.y == 0
コード例 #6
0
    def __init__(self, f):
        self.f = pygame.image.load(f)
        self._position = Position()

        self.logger = logging.getLogger(__name__)
コード例 #7
0
 def __init__(self, f):
     self.f = f
     self._position = Position()
コード例 #8
0
 def __init__(self, f, a):
     self.f = f
     self._position = Position()
     self._anchor = a
コード例 #9
0
def test_position_intersects(anchor, test_click_position, expected):
    dr = DemoRenderable(pygame.surface.Surface((10, 10)), anchor)
    assert dr.position_intersects(Position(*test_click_position)) == expected
コード例 #10
0
 def position(self):
     return Position()
コード例 #11
0
 def __init__(self):
     self.position: Position = Position()
     self.layers: Dict[int, Layer] = {}
     self.ordered_priorities: List[int] = []