From 0c175c4ba74c3003bf9990c4fb597ec00a754e29 Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Wed, 9 Jul 2025 17:29:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8E=B7=E5=8F=96=E9=9B=B7=E7=94=B5=20p?= =?UTF-8?q?id=20=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConnectSettingsUserControlModel.cs | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cs index 7223a5901e..74bd3c9132 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/Settings/ConnectSettingsUserControlModel.cs @@ -593,6 +593,29 @@ public class ConnectSettingsUserControlModel : PropertyChangedBase return 0; } + private static int GetEmulatorIndex(string address) + { + int index = 0; + if (string.IsNullOrEmpty(address)) + { + return index; + } + + const int BaseEmulatorPort = 5554; + const int BaseAdbPort = 5555; + + if (address.StartsWith("emulator-") && int.TryParse(address[9..], out int port)) + { + index = (port - BaseEmulatorPort) / 2; + } + else if (address.StartsWith("127.0.0.1:") && int.TryParse(address[10..], out int port2)) + { + index = (port2 - BaseAdbPort) / 2; + } + + return index; + } + public string Config { get @@ -602,17 +625,22 @@ public class ConnectSettingsUserControlModel : PropertyChangedBase return JsonConvert.SerializeObject(new JObject()); } - var index = int.TryParse(Index, out var indexParse) ? indexParse : 0; + int index; + if (ManualSetIndex) + { + index = int.TryParse(Index, out var indexParse) ? indexParse : 0; + } + else + { + index = GetEmulatorIndex(SettingsViewModel.ConnectSettings.ConnectAddress); + } var configObject = new JObject { ["path"] = EmulatorPath, + ["index"] = index, ["pid"] = GetEmulatorPid(index), }; - if (ManualSetIndex) - { - configObject["index"] = index; - } return JsonConvert.SerializeObject(configObject); }