コード例 #1
0
    def poll(self):
        key_get = self._key_conversions.get
        mouse_button_get = self._mouse_conversions.get
        window_height = conf.get_resolution()[1]

        for event in sdl2_ext.get_events():
            if event.type == sdl2.SDL_QUIT:
                raise SystemExit
            elif event.type == sdl2.SDL_KEYDOWN:
                self.process_key_down(key_get(event.key.keysym.sym))
            elif event.type == sdl2.SDL_KEYUP:
                self.process_key_up(key_get(event.key.keysym.sym))
            elif event.type == sdl2.SDL_MOUSEMOTION:
                event = event.motion
                x = event.x
                y = window_height - event.y
                self.process_mouse_motion((x, y))
            elif event.type == sdl2.SDL_MOUSEBUTTONUP:
                event = event.button
                x = event.x
                y = window_height - event.y
                button = mouse_button_get(event.button)
                self.process_mouse_button_up(button, (x, y))
            elif event.type == sdl2.SDL_MOUSEBUTTONDOWN:
                event = event.button
                x = event.x
                y = window_height - event.y
                button = mouse_button_get(event.button)
                self.process_mouse_button_down(button, (x, y))

        self.process_long_press()
        self.process_mouse_longpress()
コード例 #2
0
ファイル: pygame_be.py プロジェクト: diegor2/FGAme
    def poll(self):
        key_get = self._key_conversions.get
        mouse_button_get = self._mouse_conversions.get
        window_height = conf.get_resolution()[1]
        pg = pygame

        for event in pygame.event.get():
            if event.type == pg.QUIT:
                raise SystemExit
            elif event.type == pg.KEYDOWN:
                self.process_key_down(key_get(event.key))
            elif event.type == pg.KEYUP:
                self.process_key_up(key_get(event.key))
            elif event.type == pg.MOUSEMOTION:
                x, y = event.pos
                y = window_height - y
                self.process_mouse_motion((x, y))
            elif event.type == pg.MOUSEBUTTONUP:
                x, y = event.pos
                y = window_height - y
                button = mouse_button_get(event.button)
                self.process_mouse_button_up(button, (x, y))
            elif event.type == pg.MOUSEBUTTONDOWN:
                x, y = event.pos
                y = window_height - y
                button = mouse_button_get(event.button)
                self.process_mouse_button_down(button, (x, y))

        self.process_long_press()
        self.process_mouse_longpress()
コード例 #3
0
ファイル: kivy_be.py プロジェクト: gutioliveira/FGAme
    def poll(self):
        key_get = self._key_conversions.get
        mouse_button_get = self._mouse_conversions.get
        window_height = conf.get_resolution()[1]

        for event in sdl2_ext.get_events():
            if event.type == sdl2.SDL_QUIT:
                raise SystemExit
            elif event.type == sdl2.SDL_KEYDOWN:
                self.process_key_down(key_get(event.key.keysym.sym))
            elif event.type == sdl2.SDL_KEYUP:
                self.process_key_up(key_get(event.key.keysym.sym))
            elif event.type == sdl2.SDL_MOUSEMOTION:
                event = event.motion
                x = event.x
                y = window_height - event.y
                self.process_mouse_motion((x, y))
            elif event.type == sdl2.SDL_MOUSEBUTTONUP:
                event = event.button
                x = event.x
                y = window_height - event.y
                button = mouse_button_get(event.button)
                self.process_mouse_button_up(button, (x, y))
            elif event.type == sdl2.SDL_MOUSEBUTTONDOWN:
                event = event.button
                x = event.x
                y = window_height - event.y
                button = mouse_button_get(event.button)
                self.process_mouse_button_down(button, (x, y))

        self.process_long_press()
        self.process_mouse_longpress()
コード例 #4
0
ファイル: world.py プロジェクト: diegor2/FGAme
    def add_bounds(self, *args, **kwds):
        '''Cria um conjunto de AABB's que representa uma região fechada.

        Parameters
        ----------

        '''

        # Processa argumentos
        hard = kwds.pop('hard', True)
        delta = kwds.pop('delta', 10000)
        use_poly = kwds.pop('use_poly', False)

        if len(args) == 4:
            xmin, xmax, ymin, ymax = args
        elif len(args) == 1:
            xmin, xmax, ymin, ymax = args[0]
        elif not args:
            if 'width' not in kwds:
                raise TypeError('not enougth parameters to set boundaries')

            W, H = conf.get_resolution()
            value = kwds.pop('width')
            try:
                N = len(value)
                if N == 2:
                    dx, dy = value
                    xmin, xmax = dx, W - dx
                    ymin, ymax = dy, H - dy
                elif N == 4:
                    dx, dy, dx1, dy1 = value
                    xmin, xmax = dx, W - dx1
                    ymin, ymax = dy, H - dy1
                else:
                    raise ValueError('width can have 1, 2 or 4 values')
            except TypeError:
                dx = dy = value
                xmin, xmax = dx, W - dx
                ymin, ymax = dy, H - dy
        else:
            raise TypeError('invalid number of positional arguments')

        assert xmin < xmax and ymin < ymax, 'invalid bounds'
        maker = Rectangle if use_poly else AABB

        up = maker(
            bbox=(xmin - delta, xmax + delta, ymax, ymax + delta), **kwds)
        down = maker(
            bbox=(xmin - delta, xmax + delta, ymin - delta, ymin), **kwds)
        left = maker(
            bbox=(xmin - delta, xmin, ymin, ymax), **kwds)
        right = maker(
            bbox=(xmax, xmax + delta, ymin, ymax), **kwds)

        for box in [up, down, left, right]:
            box.make_static()
            assert box._invmass == 0.0
        self.add([up, down, left, right])
        self._bounds = (left, right, up, down)
        self._hard_bounds = hard
コード例 #5
0
    def poll(self):
        key_get = self._key_conversions.get
        mouse_button_get = self._mouse_conversions.get
        window_height = conf.get_resolution()[1]
        pg = pygame

        for event in pygame.event.get():
            if event.type == pg.QUIT:
                raise SystemExit
            elif event.type == pg.KEYDOWN:
                self.process_key_down(key_get(event.key))
            elif event.type == pg.KEYUP:
                self.process_key_up(key_get(event.key))
            elif event.type == pg.MOUSEMOTION:
                x, y = event.pos
                y = window_height - y
                self.process_mouse_motion((x, y))
            elif event.type == pg.MOUSEBUTTONUP:
                x, y = event.pos
                y = window_height - y
                button = mouse_button_get(event.button)
                self.process_mouse_button_up(button, (x, y))
            elif event.type == pg.MOUSEBUTTONDOWN:
                x, y = event.pos
                y = window_height - y
                button = mouse_button_get(event.button)
                self.process_mouse_button_down(button, (x, y))

        self.process_long_press()
        self.process_mouse_longpress()
コード例 #6
0
    def aabb_margin(self, *args, width=500, **kwargs):
        """
        Creates four AABBs that encloses the visible area.

        It accepts a few different signatures:

        aabb_margin(width):
            Creates a margin around screen with the given width in pixels.
            Width can be positive or negative (for a margin outside the visible
            area of the screen.
        aabb_margin(width_x, width_y):
            Set different widths in the x and y directions.
        aabb_margin(width_left, width_bottom, width_right, width_top):
            Set width in each direction to a different value.
        """

        W, H = conf.get_resolution()
        N = len(args)
        if N == 0:
            dx = dy = dx_ = dy_ = 0
        elif N == 1:
            dx = dy = dx_ = dy_ = args[0]
        elif N == 2:
            dx, dy = args
            dx_, dy_ = dx, dy
        elif N == 4:
            dx, dy, dx_, dy_ = args
        else:
            raise ValueError('width can have 1, 2 or 4 values')

        xmin, xmax = dx, W - dx_
        ymin, ymax = dy, H - dy_
        maker = objects.AABB
        width = width
        up = maker((xmin - width, xmax + width, ymax, ymax + width), **kwargs)
        down = maker((xmin - width, xmax + width, ymin - width, ymin),
                     **kwargs)
        left = maker((xmin - width, xmin, ymin, ymax), **kwargs)
        right = maker((xmax, xmax + width, ymin, ymax), **kwargs)

        for box in [up, down, left, right]:
            box.make_static()

        self.__add([up, down, left, right])
        return left, right, up, down
コード例 #7
0
ファイル: factory.py プロジェクト: gutioliveira/FGAme
    def aabb_margin(self, *args, width=500, **kwargs):
        """
        Creates four AABBs that encloses the visible area.

        It accepts a few different signatures:

        aabb_margin(width):
            Creates a margin around screen with the given width in pixels.
            Width can be positive or negative (for a margin outside the visible
            area of the screen.
        aabb_margin(width_x, width_y):
            Set different widths in the x and y directions.
        aabb_margin(width_left, width_bottom, width_right, width_top):
            Set width in each direction to a different value.
        """

        W, H = conf.get_resolution()
        N = len(args)
        if N == 0:
            dx = dy = dx_ = dy_ = 0
        elif N == 1:
            dx = dy = dx_ = dy_ = args[0]
        elif N == 2:
            dx, dy = args
            dx_, dy_ = dx, dy
        elif N == 4:
            dx, dy, dx_, dy_ = args
        else:
            raise ValueError('width can have 1, 2 or 4 values')

        xmin, xmax = dx, W - dx_
        ymin, ymax = dy, H - dy_
        maker = objects.AABB
        width = width
        up = maker((xmin - width, xmax + width, ymax, ymax + width), **kwargs)
        down = maker((xmin - width, xmax + width, ymin - width, ymin), **kwargs)
        left = maker((xmin - width, xmin, ymin, ymax), **kwargs)
        right = maker((xmax, xmax + width, ymin, ymax), **kwargs)

        for box in [up, down, left, right]:
            box.make_static()

        self.__add([up, down, left, right])
        return left, right, up, down