From bfff0609871d2be506747b3821e33043d7138b88 Mon Sep 17 00:00:00 2001 From: status102 Date: Mon, 18 Sep 2023 16:58:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=BC=80=E5=A7=8B=E5=94=A4?= =?UTF-8?q?=E9=86=92-=E8=B4=A6=E5=8F=B7=E5=88=87=E6=8D=A2=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=89=8B=E5=8A=A8=E5=88=87=E6=8D=A2=EF=BC=8C=E5=8F=AF?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E6=89=A7=E8=A1=8C=E5=BC=80=E5=A7=8B=E5=94=A4?= =?UTF-8?q?=E9=86=92=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/1.1-详细介绍.md | 2 +- docs/zh-tw/1.1-詳細介紹.md | 6 + src/MaaWpfGui/Res/Localizations/en-us.xaml | 1 + src/MaaWpfGui/Res/Localizations/ja-jp.xaml | 1 + src/MaaWpfGui/Res/Localizations/ko-kr.xaml | 1 + src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 7 +- src/MaaWpfGui/Res/Localizations/zh-tw.xaml | 9 +- .../ViewModels/UI/SettingsViewModel.cs | 5 + .../ViewModels/UI/TaskQueueViewModel.cs | 182 ++++++++++++------ .../ConnectSettingsOnWakeUpUserControl.xaml | 31 ++- 10 files changed, 174 insertions(+), 71 deletions(-) diff --git a/docs/1.1-详细介绍.md b/docs/1.1-详细介绍.md index 7043c90f3c..2cf5fc6c51 100644 --- a/docs/1.1-详细介绍.md +++ b/docs/1.1-详细介绍.md @@ -111,7 +111,7 @@ icon: ic:baseline-article ### 切换账号 -- 仅支持切换至已登录的账号,使用登录名进行匹配,保证输入内容在所有已登录账号唯一即可 +- 仅支持切换至已登录的账号,使用登录名进行查找,保证输入内容在所有已登录账号唯一即可 - 官服:123****4567,可输入 123****4567、4567、123、3****4567 - B服:张三,可输入 张三、张、三 diff --git a/docs/zh-tw/1.1-詳細介紹.md b/docs/zh-tw/1.1-詳細介紹.md index 021abb1205..8b3c5297e2 100644 --- a/docs/zh-tw/1.1-詳細介紹.md +++ b/docs/zh-tw/1.1-詳細介紹.md @@ -98,6 +98,12 @@ icon: ic:baseline-article - 戰鬥過程中如果刮痧了一直打不完,超過 5 分鐘會自動撤退所有地面單位;超過 6 分鐘會自動放棄當局戰鬥,不會卡住。 - 如果任務出現問題卡住了,會自動放棄當次探索並重試。但如果經常在某個地方卡住然後放棄、嚴重影響效率的,歡迎提個 issue 反饋一下~ +### 切換賬號 + +- 僅支持切換至已登錄的賬號,使用登錄名進行查找,保證輸入內容在所有已登錄賬號唯一即可 + - 官服:123****4567,可輸入 123****4567、4567、123、3****4567 + - B服:張三,可輸入 張三、張、三 + ### 自動戰鬥 - 歡迎使用作業分享站 [prts.plus](https://prts.plus),[抄作業.com](https://抄作业.com) 使用 & 分享作業檔案! diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index db3e7b58e1..9d63b26dd3 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -259,6 +259,7 @@ Enter 「SSReopen-XX」to pass SS normal difficulty level at one timeThis checkbox will be automatically unchecked after each detect is completed, and can be checked again if you need to re-detect Re-detect every times Account Switch + Manual switch Fill in the account that needs to be switched to, leave blank to close the account switching Official(CN): Enter the mobile phone number displayed on the login interface, such as 123****4567 Bilibili: Enter the account name displayed on the login interface, such as Zhang San diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index d8ba670608..c3ad9c6ce0 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -252,6 +252,7 @@ このチェックボックスは、検出が完了するたびに自動的にチェックが外れますが、再検出が必要な場合は再度チェックを入れることができます 毎回再検出する アカウントの切り替え + 手動スイッチ 切り替える必要があるアカウントを入力し、空白のままにしてアカウントの切り替えを完了します 公式(CN): ログイン インターフェイスに表示される携帯電話番号を入力します (例: 123****4567) Bilibili: ログイン インターフェイスに表示されるアカウント名 (Zhang San など) を入力します。 diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index d8e13e1f7c..211394450f 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -258,6 +258,7 @@ OF-1을 해금하지 않았다면 선택하지 말아 주세요. 이 체크박스는 감지가 끝나면 자동으로 체크가 해제됩니다. 다시 감지하려면 다시 체크해주세요 매번 재감지 계정 전환 + 수동 스위치 전환할 계좌를 입력하고, 계좌 전환을 종료하려면 공백으로 남겨두세요. 공식(CN): 로그인 인터페이스에 표시된 휴대폰 번호(예: 123****4567)를 입력하세요. Bilibili: 로그인 인터페이스에 표시되는 계정 이름(예: Zhang San)을 입력하세요. diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 57da721d0b..a226c96b6c 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -280,9 +280,10 @@ 每次检测完成后会自动取消勾选,若需要重新检测可再次勾选,若反复连接失败可勾选始终自动检测连接 每次重新检测 账号切换 - 填写需要切换至的账号,留空以关闭账号切换 -官服输入登录界面显示的手机号,如 123****4567 - B服输入登录界面显示的账号名,如 张三 + 手动切换 + 需要切换至的账号,留空以禁用 +官服输入登录界面显示的手机号,如「123****4567」,可输入「123****4567」或「4567」或「23****45」 + B服输入登录界面显示的账号名,如「张三」,可输入「张」或「三」 暂不支持其他服 ADB 路径 (相对/绝对) 连接地址 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 91973dbd10..0946d2f20b 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -261,10 +261,11 @@ 每次檢測完成後會自動取消勾選,若需要重新檢測可再次勾選 每次重新檢測 賬號切換 - 填寫需要切換至的賬號,留空以關閉賬號切換 -官服輸入登錄界面顯示的手機號,如 123****4567 - B服輸入登錄界面顯示的賬號名,如 張三 -暫不支持其他類型 + 手動切换 + 需要切換至的賬號,留空以禁用 +官服輸入登錄界面顯示的手機號,如「123****4567」,可輸入「123****4567」或「4567」或「23****45」 + B服輸入登錄界面顯示的賬號名,如「張三」,可輸入「張」或「三」 +暫不支持其他服 ADB 路徑(相對/絕對) 連接地址 若遇到問題可嘗試手動修改 diff --git a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs index 2294e1ef08..0d7739ca46 100644 --- a/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/SettingsViewModel.cs @@ -560,6 +560,11 @@ namespace MaaWpfGui.ViewModels.UI } } + public void AccountSwitchMannualRun() + { + Instances.TaskQueueViewModel.QuickSwitchAccount(); + } + private bool _minimizingStartup = Convert.ToBoolean(ConfigurationHelper.GetValue(ConfigurationKeys.MinimizingStartup, bool.FalseString)); /// diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index 24a984b30a..0f593f0f83 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -732,6 +732,70 @@ namespace MaaWpfGui.ViewModels.UI } } + private async Task ConnectToSimulator() + { + string errMsg = string.Empty; + bool connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); + + // 尝试启动模拟器 + if (!connected && Instances.SettingsViewModel.RetryOnDisconnected) + { + AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("TryToStartEmulator")); + + await Task.Run(() => Instances.SettingsViewModel.TryToStartEmulator(true)); + + if (Stopping) + { + SetStopped(); + return false; + } + + connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); + } + + // 尝试重启adb + if (!connected && Instances.SettingsViewModel.AllowADBRestart) + { + AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("RestartADB")); + + await Task.Run(() => Instances.SettingsViewModel.RestartADB()); + + if (Stopping) + { + SetStopped(); + return false; + } + + connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); + } + + // 尝试杀掉adb进程 + if (!connected && Instances.SettingsViewModel.AllowADBHardRestart) + { + AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("HardRestartADB")); + + await Task.Run(() => Instances.SettingsViewModel.HardRestartADB()); + + if (Stopping) + { + SetStopped(); + return false; + } + + connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); + } + + if (!connected) + { + AddLog(errMsg, UiLogColor.Error); + _runningState.SetIdle(true); + SetStopped(); + return false; + } + + return true; + } + /// /// Starts. /// @@ -758,9 +822,6 @@ namespace MaaWpfGui.ViewModels.UI AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info); } - string errMsg = string.Empty; - bool connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); - // 一般是点了“停止”按钮了 if (Stopping) { @@ -768,59 +829,8 @@ namespace MaaWpfGui.ViewModels.UI return; } - // 尝试启动模拟器 - if (!connected && Instances.SettingsViewModel.RetryOnDisconnected) + if (!await ConnectToSimulator()) { - AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("TryToStartEmulator")); - - await Task.Run(() => Instances.SettingsViewModel.TryToStartEmulator(true)); - - if (Stopping) - { - SetStopped(); - return; - } - - connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); - } - - // 尝试重启adb - if (!connected && Instances.SettingsViewModel.AllowADBRestart) - { - AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("RestartADB")); - - await Task.Run(() => Instances.SettingsViewModel.RestartADB()); - - if (Stopping) - { - SetStopped(); - return; - } - - connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); - } - - // 尝试杀掉adb进程 - if (!connected && Instances.SettingsViewModel.AllowADBHardRestart) - { - AddLog(LocalizationHelper.GetString("ConnectFailed") + "\n" + LocalizationHelper.GetString("HardRestartADB")); - - await Task.Run(() => Instances.SettingsViewModel.HardRestartADB()); - - if (Stopping) - { - SetStopped(); - return; - } - - connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); - } - - if (!connected) - { - AddLog(errMsg, UiLogColor.Error); - _runningState.SetIdle(true); - SetStopped(); return; } @@ -944,6 +954,68 @@ namespace MaaWpfGui.ViewModels.UI _runningState.SetIdle(true); } + public async void QuickSwitchAccount() + { + if (!_runningState.GetIdle()) + { + return; + } + + _runningState.SetIdle(false); + + // 虽然更改时已经保存过了,不过保险起见还是在点击开始之后再保存一次任务及基建列表 + TaskItemSelectionChanged(); + Instances.SettingsViewModel.InfrastOrderSelectionChanged(); + + ClearLog(); + + await Task.Run(() => Instances.SettingsViewModel.RunScript("StartsWithScript")); + + AddLog(LocalizationHelper.GetString("ConnectingToEmulator")); + if (!Instances.SettingsViewModel.AdbReplaced && !Instances.SettingsViewModel.IsAdbTouchMode()) + { + AddLog(LocalizationHelper.GetString("AdbReplacementTips"), UiLogColor.Info); + } + + string errMsg = string.Empty; + bool connected = await Task.Run(() => Instances.AsstProxy.AsstConnect(ref errMsg)); + + // 一般是点了“停止”按钮了 + if (Stopping) + { + SetStopped(); + return; + } + + if (!await ConnectToSimulator()) + { + return; + } + + // 一般是点了“停止”按钮了 + if (Stopping) + { + SetStopped(); + return; + } + + bool taskRet = true; + taskRet &= AppendStart(); + + taskRet &= Instances.AsstProxy.AsstStart(); + + if (taskRet) + { + AddLog(LocalizationHelper.GetString("Running")); + } + else + { + AddLog(LocalizationHelper.GetString("UnknownErrorOccurs")); + await Stop(); + SetStopped(); + } + } + private static bool AppendStart() { var mode = Instances.SettingsViewModel.ClientType; diff --git a/src/MaaWpfGui/Views/UserControl/ConnectSettingsOnWakeUpUserControl.xaml b/src/MaaWpfGui/Views/UserControl/ConnectSettingsOnWakeUpUserControl.xaml index 2491d95eda..83e382604b 100644 --- a/src/MaaWpfGui/Views/UserControl/ConnectSettingsOnWakeUpUserControl.xaml +++ b/src/MaaWpfGui/Views/UserControl/ConnectSettingsOnWakeUpUserControl.xaml @@ -14,14 +14,29 @@ d:DesignWidth="220" mc:Ignorable="d"> - + + + + + + + +