Просмотр исходного кода

Merge pull request #7682 from german77/udp_fix

input_common: Fix UDP controller mappings
bunnei 4 лет назад
Родитель
Сommit
acbfb0083a

+ 6 - 2
src/core/hid/emulated_controller.cpp

@@ -389,7 +389,8 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
             devices.begin(), devices.end(), [param](const Common::ParamPackage param_) {
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
-                       param.Get("port", 0) == param_.Get("port", 0);
+                       param.Get("port", 0) == param_.Get("port", 0) &&
+                       param.Get("pad", 0) == param_.Get("pad", 0);
             });
         if (devices_it != devices.end()) {
             continue;
@@ -398,6 +399,7 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
         device.Set("engine", param.Get("engine", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("port", param.Get("port", 0));
+        device.Set("pad", param.Get("pad", 0));
         devices.push_back(device);
     }
 
@@ -412,7 +414,8 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
             devices.begin(), devices.end(), [param](const Common::ParamPackage param_) {
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
-                       param.Get("port", 0) == param_.Get("port", 0);
+                       param.Get("port", 0) == param_.Get("port", 0) &&
+                       param.Get("pad", 0) == param_.Get("pad", 0);
             });
         if (devices_it != devices.end()) {
             continue;
@@ -421,6 +424,7 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
         device.Set("engine", param.Get("engine", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("port", param.Get("port", 0));
+        device.Set("pad", param.Get("pad", 0));
         devices.push_back(device);
     }
     return devices;

+ 16 - 8
src/input_common/drivers/udp_client.cpp

@@ -442,14 +442,22 @@ MotionMapping UDPClient::GetMotionMappingForDevice(const Common::ParamPackage& p
     }
 
     MotionMapping mapping = {};
-    Common::ParamPackage motion_params;
-    motion_params.Set("engine", GetEngineName());
-    motion_params.Set("guid", params.Get("guid", ""));
-    motion_params.Set("port", params.Get("port", 0));
-    motion_params.Set("pad", params.Get("pad", 0));
-    motion_params.Set("motion", 0);
-    mapping.insert_or_assign(Settings::NativeMotion::MotionLeft, std::move(motion_params));
-    mapping.insert_or_assign(Settings::NativeMotion::MotionRight, std::move(motion_params));
+    Common::ParamPackage left_motion_params;
+    left_motion_params.Set("engine", GetEngineName());
+    left_motion_params.Set("guid", params.Get("guid", ""));
+    left_motion_params.Set("port", params.Get("port", 0));
+    left_motion_params.Set("pad", params.Get("pad", 0));
+    left_motion_params.Set("motion", 0);
+
+    Common::ParamPackage right_motion_params;
+    right_motion_params.Set("engine", GetEngineName());
+    right_motion_params.Set("guid", params.Get("guid", ""));
+    right_motion_params.Set("port", params.Get("port", 0));
+    right_motion_params.Set("pad", params.Get("pad", 0));
+    right_motion_params.Set("motion", 0);
+
+    mapping.insert_or_assign(Settings::NativeMotion::MotionLeft, std::move(left_motion_params));
+    mapping.insert_or_assign(Settings::NativeMotion::MotionRight, std::move(right_motion_params));
     return mapping;
 }
 

+ 8 - 7
src/yuzu/configuration/configure_input_player.cpp

@@ -747,15 +747,16 @@ void ConfigureInputPlayer::UpdateInputDeviceCombobox() {
     const auto first_engine = devices[0].Get("engine", "");
     const auto first_guid = devices[0].Get("guid", "");
     const auto first_port = devices[0].Get("port", 0);
+    const auto first_pad = devices[0].Get("pad", 0);
 
     if (devices.size() == 1) {
-        const auto devices_it =
-            std::find_if(input_devices.begin(), input_devices.end(),
-                         [first_engine, first_guid, first_port](const Common::ParamPackage param) {
-                             return param.Get("engine", "") == first_engine &&
-                                    param.Get("guid", "") == first_guid &&
-                                    param.Get("port", 0) == first_port;
-                         });
+        const auto devices_it = std::find_if(
+            input_devices.begin(), input_devices.end(),
+            [first_engine, first_guid, first_port, first_pad](const Common::ParamPackage param) {
+                return param.Get("engine", "") == first_engine &&
+                       param.Get("guid", "") == first_guid && param.Get("port", 0) == first_port &&
+                       param.Get("pad", 0) == first_pad;
+            });
         const int device_index =
             devices_it != input_devices.end()
                 ? static_cast<int>(std::distance(input_devices.begin(), devices_it))