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