From 77076a4aeaf6fe97a4896a36366a64a583fca617 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 22 Apr 2023 15:47:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=B2=E5=91=98=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E5=8F=98=E5=8A=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=AF=BC=E5=87=BA=E5=89=AA=E5=88=87=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Miscellaneous/OperBoxRecognitionTask.cpp | 15 ++++-- src/MaaWpfGui/Res/Localizations/en-us.xaml | 1 + src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 1 + .../ViewModels/UI/RecognizerViewModel.cs | 19 +++++++- src/MaaWpfGui/Views/UI/RecognizerView.xaml | 47 +++++++++---------- 5 files changed, 55 insertions(+), 28 deletions(-) diff --git a/src/MaaCore/Task/Miscellaneous/OperBoxRecognitionTask.cpp b/src/MaaCore/Task/Miscellaneous/OperBoxRecognitionTask.cpp index 69a4f6ea1f..c59e1d35b3 100644 --- a/src/MaaCore/Task/Miscellaneous/OperBoxRecognitionTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/OperBoxRecognitionTask.cpp @@ -62,14 +62,23 @@ void asst::OperBoxRecognitionTask::callback_analyze_result(bool done) json::value info = basic_info_with_what("OperBoxInfo"); auto& details = info["details"]; details["done"] = done; - auto& box_oper = details["operbox"].as_array(); + auto& all_opers = details["all_opers"].as_array(); + auto& own_opers = details["own_opers"].as_array(); for (const auto& name : all_oper_names) { - box_oper.emplace_back(json::object { + bool own = m_own_opers.contains(name); + all_opers.emplace_back(json::object { { "id", BattleData.get_id(name) }, { "name", name }, - { "own", m_own_opers.contains(name) }, + { "own", own }, }); + if (own) { + own_opers.emplace_back(json::object { + { "id", BattleData.get_id(name) }, { "name", name }, { "own", own }, + // TODO + // { "elite", 0 }, { "level", 0 }, + }); + } } callback(AsstMsg::SubTaskExtraInfo, info); diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index 8b309a1061..231a9ddbc1 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -385,6 +385,7 @@ Start to identify This function is still in testing, please sort the operator list by rarity or level. If the statistics are wrong, please pack the debug/oper file and submit an issue to us~ Not owned: {0} : \n\n{1}\n\nOwned: {2} : \n\n{3} + Copy to clipboard diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 652ce17cc1..712f1a2d35 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -387,6 +387,7 @@ 该功能尚处于测试阶段,干员列表请用稀有度和等级排序,若统计有误,欢迎打包 debug/oper 文件后向我们提交issue ~ 未拥有:{0} 名:\n\n{1}\n\n已拥有:{2} 名:\n\n{3} 开始识别 + 复制到剪切板 diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index 850343c847..34f4f4b3ff 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -376,9 +376,12 @@ namespace MaaWpfGui.ViewModels.UI set => SetAndNotify(ref _operBoxResult, value); } + private string _operBoxExportData = string.Empty; + public bool OperBoxParse(JObject details) { - JArray operBoxs = (JArray)details["operbox"]; + JArray operBoxs = (JArray)details["all_opers"]; + List operHave = new List(); List operNotHave = new List(); @@ -429,6 +432,7 @@ namespace MaaWpfGui.ViewModels.UI { OperBoxInfo = LocalizationHelper.GetString("IdentificationCompleted") + "\n" + LocalizationHelper.GetString("OperBoxRecognitionTip"); OperBoxResult = string.Format(LocalizationHelper.GetString("OperBoxRecognitionResult"), operNotHave.Count, operNotHaveNames, operHave.Count, operHaveNames); + _operBoxExportData = details["own_opers"].ToString(); } else { @@ -440,6 +444,8 @@ namespace MaaWpfGui.ViewModels.UI public async void StartOperBox() { + _operBoxExportData = string.Empty; + string errMsg = string.Empty; OperBoxInfo = LocalizationHelper.GetString("ConnectingToEmulator"); bool caught = await Task.Run(() => _asstProxy.AsstConnect(ref errMsg)); @@ -455,6 +461,17 @@ namespace MaaWpfGui.ViewModels.UI } } + public void ExportOperBox() + { + if (string.IsNullOrEmpty(_operBoxExportData)) + { + return; + } + + Clipboard.SetDataObject(_operBoxExportData); + OperBoxInfo = LocalizationHelper.GetString("CopiedToClipboard"); + } + #endregion OperBox } } diff --git a/src/MaaWpfGui/Views/UI/RecognizerView.xaml b/src/MaaWpfGui/Views/UI/RecognizerView.xaml index 6cc6f1b09c..8a73a08457 100644 --- a/src/MaaWpfGui/Views/UI/RecognizerView.xaml +++ b/src/MaaWpfGui/Views/UI/RecognizerView.xaml @@ -5,25 +5,24 @@ xmlns:c="clr-namespace:CalcBinding;assembly=CalcBinding" xmlns:controls="clr-namespace:MaaWpfGui.Styles.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:s="https://github.com/canton7/Stylet" xmlns:styles="clr-namespace:MaaWpfGui.Styles" xmlns:ui="clr-namespace:MaaWpfGui.ViewModels.UI" xmlns:viewModels="clr-namespace:MaaWpfGui.ViewModels" xmlns:vm="clr-namespace:MaaWpfGui" - xmlns:hc="https://handyorg.github.io/handycontrol" d:DataContext="{d:DesignInstance {x:Type ui:RecognizerViewModel}}" d:DesignHeight="1200" d:DesignWidth="800" mc:Ignorable="d"> - + @@ -31,8 +30,8 @@ + VerticalAlignment="Top" + IsInertiaEnabled="True"> - + @@ -121,8 +119,8 @@ + VerticalAlignment="Top" + IsInertiaEnabled="True"> - + - - + + + VerticalAlignment="Top" + IsInertiaEnabled="True"> + TextWrapping="Wrap" /> + TextWrapping="Wrap" /> - +