@@ -583,36 +583,6 @@ bool Controller_NPad::SwapNpadAssignment(u32 npad_id_1, u32 npad_id_2) {
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Controller_NPad::IsControllerSupported(NPadControllerType controller) {
 | 
			
		||||
    if (controller == NPadControllerType::Handheld) {
 | 
			
		||||
        // Handheld is not even a supported type, lets stop here
 | 
			
		||||
        if (std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(),
 | 
			
		||||
                      NPAD_HANDHELD) == supported_npad_id_types.end()) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        // Handheld should not be supported in docked mode
 | 
			
		||||
        if (Settings::values.use_docked_mode) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    switch (controller) {
 | 
			
		||||
    case NPadControllerType::ProController:
 | 
			
		||||
        return style.pro_controller;
 | 
			
		||||
    case NPadControllerType::Handheld:
 | 
			
		||||
        return style.handheld;
 | 
			
		||||
    case NPadControllerType::JoyDual:
 | 
			
		||||
        return style.joycon_dual;
 | 
			
		||||
    case NPadControllerType::JoyLeft:
 | 
			
		||||
        return style.joycon_left;
 | 
			
		||||
    case NPadControllerType::JoyRight:
 | 
			
		||||
        return style.joycon_right;
 | 
			
		||||
    case NPadControllerType::Pokeball:
 | 
			
		||||
        return style.pokeball;
 | 
			
		||||
    default:
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Controller_NPad::LedPattern Controller_NPad::GetLedPattern(u32 npad_id) {
 | 
			
		||||
    if (npad_id == npad_id_list.back() || npad_id == npad_id_list[npad_id_list.size() - 2]) {
 | 
			
		||||
        // These are controllers without led patterns
 | 
			
		||||
@@ -659,25 +629,24 @@ void Controller_NPad::ClearAllConnectedControllers() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Controller_NPad::DisconnectAllConnectedControllers() {
 | 
			
		||||
    std::for_each(connected_controllers.begin(), connected_controllers.end(),
 | 
			
		||||
                  [](ControllerHolder& controller) { controller.is_connected = false; });
 | 
			
		||||
    for (ControllerHolder& controller : connected_controllers) {
 | 
			
		||||
        controller.is_connected = false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Controller_NPad::ConnectAllDisconnectedControllers() {
 | 
			
		||||
    std::for_each(connected_controllers.begin(), connected_controllers.end(),
 | 
			
		||||
                  [](ControllerHolder& controller) {
 | 
			
		||||
                      if (controller.type != NPadControllerType::None && !controller.is_connected) {
 | 
			
		||||
                          controller.is_connected = false;
 | 
			
		||||
                      }
 | 
			
		||||
                  });
 | 
			
		||||
    for (ControllerHolder& controller : connected_controllers) {
 | 
			
		||||
        if (controller.type != NPadControllerType::None && !controller.is_connected) {
 | 
			
		||||
            controller.is_connected = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Controller_NPad::ClearAllControllers() {
 | 
			
		||||
    std::for_each(connected_controllers.begin(), connected_controllers.end(),
 | 
			
		||||
                  [](ControllerHolder& controller) {
 | 
			
		||||
                      controller.type = NPadControllerType::None;
 | 
			
		||||
                      controller.is_connected = false;
 | 
			
		||||
                  });
 | 
			
		||||
    for (ControllerHolder& controller : connected_controllers) {
 | 
			
		||||
        controller.type = NPadControllerType::None;
 | 
			
		||||
        controller.is_connected = false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u32 Controller_NPad::GetAndResetPressState() {
 | 
			
		||||
@@ -685,10 +654,10 @@ u32 Controller_NPad::GetAndResetPressState() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const {
 | 
			
		||||
    const bool support_handheld =
 | 
			
		||||
        std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(), NPAD_HANDHELD) !=
 | 
			
		||||
        supported_npad_id_types.end();
 | 
			
		||||
    if (controller == NPadControllerType::Handheld) {
 | 
			
		||||
        const bool support_handheld =
 | 
			
		||||
            std::find(supported_npad_id_types.begin(), supported_npad_id_types.end(),
 | 
			
		||||
                      NPAD_HANDHELD) != supported_npad_id_types.end();
 | 
			
		||||
        // Handheld is not even a supported type, lets stop here
 | 
			
		||||
        if (!support_handheld) {
 | 
			
		||||
            return false;
 | 
			
		||||
@@ -700,6 +669,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (std::any_of(supported_npad_id_types.begin(), supported_npad_id_types.end(),
 | 
			
		||||
                    [](u32 npad_id) { return npad_id <= MAX_NPAD_ID; })) {
 | 
			
		||||
        switch (controller) {
 | 
			
		||||
@@ -717,6 +687,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -795,6 +766,7 @@ Controller_NPad::NPadControllerType Controller_NPad::DecideBestController(
 | 
			
		||||
        priority_list.push_back(NPadControllerType::JoyLeft);
 | 
			
		||||
        priority_list.push_back(NPadControllerType::JoyRight);
 | 
			
		||||
        priority_list.push_back(NPadControllerType::JoyDual);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const auto iter = std::find_if(priority_list.begin(), priority_list.end(),
 | 
			
		||||
 
 | 
			
		||||
@@ -301,6 +301,11 @@ private:
 | 
			
		||||
        bool is_connected;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    void InitNewlyAddedControler(std::size_t controller_idx);
 | 
			
		||||
    bool IsControllerSupported(NPadControllerType controller) const;
 | 
			
		||||
    NPadControllerType DecideBestController(NPadControllerType priority) const;
 | 
			
		||||
    void RequestPadStateUpdate(u32 npad_id);
 | 
			
		||||
 | 
			
		||||
    u32 press_state{};
 | 
			
		||||
 | 
			
		||||
    NPadType style{};
 | 
			
		||||
@@ -321,12 +326,7 @@ private:
 | 
			
		||||
    std::array<ControllerHolder, 10> connected_controllers{};
 | 
			
		||||
    bool can_controllers_vibrate{true};
 | 
			
		||||
 | 
			
		||||
    void InitNewlyAddedControler(std::size_t controller_idx);
 | 
			
		||||
    bool IsControllerSupported(NPadControllerType controller) const;
 | 
			
		||||
    NPadControllerType DecideBestController(NPadControllerType priority) const;
 | 
			
		||||
    void RequestPadStateUpdate(u32 npad_id);
 | 
			
		||||
    std::array<ControllerPad, 10> npad_pad_states{};
 | 
			
		||||
    bool IsControllerSupported(NPadControllerType controller);
 | 
			
		||||
    bool is_in_lr_assignment_mode{false};
 | 
			
		||||
    Core::System& system;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user