From a11dff77feb9e0e94598236ab34c8dcd7e48595d Mon Sep 17 00:00:00 2001 From: uye <99072975+ABA2396@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:20:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20RecognizerViewModel=20=E6=94=B9?= =?UTF-8?q?=E7=94=A8=20GetLocalizedCharacterName?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/UI/RecognizerViewModel.cs | 76 ++++--------------- 1 file changed, 16 insertions(+), 60 deletions(-) diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index 9cd654f620..24e1e5b6dd 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -514,8 +514,8 @@ namespace MaaWpfGui.ViewModels.UI /// /// 未实装干员,但在battle_data中, /// - private static readonly HashSet _virtuallyOpers = new HashSet - { + private static readonly HashSet _virtuallyOpers = + [ "char_504_rguard", "char_505_rcast", "char_506_rmedic", @@ -527,8 +527,8 @@ namespace MaaWpfGui.ViewModels.UI "char_509_acast", "char_508_aguard", "char_1001_amiya2", - "char_1037_amiya3", - }; + "char_1037_amiya3" + ]; private string _operBoxInfo = LocalizationHelper.GetString("OperBoxRecognitionTip"); @@ -585,11 +585,6 @@ namespace MaaWpfGui.ViewModels.UI { get { - if (OperBoxDataArray == null) - { - return null; - } - if (_operBoxPotential != null) { return _operBoxPotential; @@ -612,65 +607,26 @@ namespace MaaWpfGui.ViewModels.UI public bool OperBoxParse(JObject details) { - var operBoxes = (JArray)details["all_opers"]; + var operBoxes = (JArray?)details["all_opers"]; + + if (operBoxes == null) + { + return false; + } List> operHave = []; List> operNotHave = []; - string localizedName; - string operNameLanguage = ConfigurationHelper.GetValue(ConfigurationKeys.OperNameLanguage, string.Empty); - - if (operNameLanguage == "OperNameLanguageClient") - { - localizedName = ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty) switch - { - "Official" => "name", - "Bilibili" => "name", - "YoStarJP" => "name_jp", - "YoStarKR" => "name_kr", - "txwy" => "name_tw", - _ => "name_en", - }; - } - else - { - string localization = ConfigurationHelper.GetValue(ConfigurationKeys.Localization, string.Empty); - if (operNameLanguage.Contains('.')) - { - if (operNameLanguage.Split('.')[0] == "OperNameLanguageForce") - { - localization = operNameLanguage.Split('.')[1] switch - { - "zh-cn" => "zh-cn", - "en-us" => "en-us", - "ja-jp" => "ja-jp", - "ko-kr" => "ko-kr", - "zh-tw" => "zh-tw", - _ => localization, - }; - } - } - - localizedName = localization switch - { - "zh-cn" => "name", - "ja-jp" => "name_jp", - "ko-kr" => "name_kr", - "zh-tw" => "name_tw", - _ => "name_en", - }; - } - foreach (JObject operBox in operBoxes.Cast()) { - var tuple = new Tuple((string)operBox[localizedName], (int)operBox["rarity"]); + var tuple = new Tuple(DataHelper.GetLocalizedCharacterName((string?)operBox["name"]) ?? "???", (int)(operBox["rarity"] ?? -1)); - if (_virtuallyOpers.Contains((string)operBox["id"])) + if (_virtuallyOpers.Contains((string?)operBox["id"])) { continue; } - if ((bool)operBox["own"]) + if ((bool)(operBox["own"] ?? false)) { /*已拥有干员*/ operHave.Add(tuple); @@ -714,13 +670,13 @@ namespace MaaWpfGui.ViewModels.UI newlineFlag = 0; } - bool done = (bool)details["done"]; + bool done = (bool)(details["done"] ?? false); if (done) { 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(); - OperBoxDataArray = (JArray)details["own_opers"]; + OperBoxExportData = details["own_opers"]?.ToString() ?? string.Empty; + OperBoxDataArray = (JArray)(details["own_opers"] ?? new JArray()); OperBoxDone = true; } else