Пример #1
0
def init():
    """
    Initialize gamepad support.
    """

    if not renpy.game.preferences.pad_enabled:
        return

    pygame_sdl2.controller.init()

    try:
        with renpy.loader.load("gamecontrollerdb.txt") as f:
            pygame_sdl2.controller.add_mappings(f)
    except:
        pass

    try:
        with open(
                os.path.join(renpy.config.renpy_base, "gamecontrollerdb.txt"),
                "rb") as f:
            pygame_sdl2.controller.add_mappings(f)
    except:
        pass

    for i in range(pygame_sdl2.controller.get_count()):
        c = Controller(i)
        renpy.exports.write_log(
            "controller: %r %r %r" %
            (c.get_guid_string(), c.get_name(), c.is_controller()))
Пример #2
0
def init():
    """
    Initialize gamepad support.
    """

    if not renpy.game.preferences.pad_enabled:
        return

    pygame_sdl2.controller.init()

    try:
        with renpy.loader.load("gamecontrollerdb.txt") as f:
            pygame_sdl2.controller.add_mappings(f)
    except:
        pass

    try:
        with open(os.path.join(renpy.config.renpy_base, "gamecontrollerdb.txt"), "rb") as f:
            pygame_sdl2.controller.add_mappings(f)
    except:
        pass

    for i in range(pygame_sdl2.controller.get_count()):
        c = Controller(i)
        renpy.exports.write_log("controller: %r %r %r" % (c.get_guid_string(), c.get_name(), c.is_controller()))
Пример #3
0
def start(index):
    """
    Starts the controller at index.
    """

    quit(index)
    c = Controller(index)

    if not c.is_controller():
        return

    renpy.exports.write_log("controller: %r %r %r" % (c.get_guid_string(), c.get_name(), c.is_controller()))

    if renpy.game.preferences.pad_enabled != "all":
        for prefix in renpy.config.controller_blocklist:
            if c.get_guid_string().startswith(prefix):
                renpy.exports.write_log("Controller found in blocklist, not using.")
                return

    try:
        c.init()
        controllers[index] = c
    except Exception:
        renpy.display.log.exception()

    renpy.exports.restart_interaction()
Пример #4
0
def init():
    """
    Initialize gamepad support.
    """

    if not renpy.game.preferences.pad_enabled:
        return

    pygame_sdl2.controller.init()
    load_mappings()

    for i in range(pygame_sdl2.controller.get_count()):
        c = Controller(i)
        renpy.exports.write_log("controller: %r %r %r" % (c.get_guid_string(), c.get_name(), c.is_controller()))
Пример #5
0
def init():
    """
    Initialize gamepad support.
    """

    if not renpy.game.preferences.pad_enabled:
        return

    pygame_sdl2.controller.init()
    load_mappings()

    for i in range(pygame_sdl2.controller.get_count()):
        c = Controller(i)
        renpy.exports.write_log(
            "controller: %r %r %r" %
            (c.get_guid_string(), c.get_name(), c.is_controller()))
Пример #6
0
def start(index):
    """
    Starts the controller at index.
    """

    quit(index)
    controllers[index] = c = Controller(index)
    c.init()
Пример #7
0
def start(index):
    """
    Starts the controller at index.
    """

    quit(index)
    controllers[index] = c = Controller(index)
    c.init()

    renpy.exports.restart_interaction()
Пример #8
0
def event(ev):
    """
    Processes an event and returns the same event, a new event, or None if
    the event has been processed and should be ignored.
    """

    if ev.type == CONTROLLERDEVICEADDED:
        if ev.which not in controllers:
            controllers[ev.which] = c = Controller(ev.which)
            c.init()

        return None

    elif ev.type == CONTROLLERDEVICEREMOVED:

        if ev.which in controllers:
            c = controllers.pop(ev.which)
            c.quit()

        return None

    elif ev.type == CONTROLLERAXISMOTION:

        if ev.value > THRESHOLD:
            pos = "pos"
        elif ev.value < -THRESHOLD:
            pos = "neg"
        else:
            pos = None

        old_pos = axis_positions.get((ev.which, ev.axis), None)

        if pos == old_pos:
            return None

        axis_positions[(ev.which, ev.axis)] = pos

        if pos is None:
            return None

        name = "pad_{}_{}".format(get_string_for_axis(ev.axis), pos)
        ev = make_event(name)

    elif ev.type in (CONTROLLERBUTTONDOWN, CONTROLLERBUTTONUP):

        if ev.type == CONTROLLERBUTTONDOWN:
            pr = "press"
        else:
            pr = "release"

        name = "pad_{}_{}".format(get_string_for_button(ev.button), pr)
        ev = make_event(name)

    elif ev.type in (
            pygame.JOYAXISMOTION,
            pygame.JOYHATMOTION,
            pygame.JOYBALLMOTION,
            pygame.JOYBUTTONDOWN,
            pygame.JOYBUTTONUP,
            pygame.JOYDEVICEADDED,
            pygame.JOYDEVICEREMOVED,
    ):

        return None

    return ev