diff --git a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs index 1759141730..c00518554a 100644 --- a/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/RecognizerViewModel.cs @@ -280,7 +280,7 @@ namespace MaaWpfGui.ViewModels.UI if (RecruitmentShowPotential && (tag_level >= 4 || oper_level == 1)) { - if (OperBoxPotential.ContainsKey(oper_name)) + if (OperBoxPotential.ContainsKey(oper_name) && oper_level != 5) { potential = " ( " + OperBoxPotential[oper_name] + " )"; } @@ -437,19 +437,19 @@ namespace MaaWpfGui.ViewModels.UI /// /// 未实装干员,但在battle_data中, /// - private static readonly string[] VirtuallyOpers = + private static readonly HashSet VirtuallyOpers = new HashSet { - "预备干员-近战", - "预备干员-术师", - "预备干员-后勤", - "预备干员-狙击", - "预备干员-重装", - "郁金香", - "Stormeye", - "Touch", - "Pith", - "Sharp", - "阿米娅-WARRIOR", + "char_504_rguard", + "char_505_rcast", + "char_506_rmedic", + "char_507_rsnipe", + "char_514_rdfend", + "char_513_apionr", + "char_511_asnipe", + "char_510_amedic", + "char_509_acast", + "char_508_aguard", + "char_1001_amiya2", }; private string _operBoxInfo = LocalizationHelper.GetString("OperBoxRecognitionTip"); @@ -517,31 +517,39 @@ namespace MaaWpfGui.ViewModels.UI { JArray operBoxs = (JArray)details["all_opers"]; - List operHave = new List(); - List operNotHave = new List(); + List> operHave = new List>(); + List> operNotHave = new List>(); foreach (JObject operBox in operBoxs.Cast()) { + var tuple = new Tuple((string)operBox["name"], (int)operBox["rarity"]); + + if (VirtuallyOpers.Contains((string)operBox["id"])) + { + continue; + } + if ((bool)operBox["own"]) { /*已拥有干员*/ - operHave.Add((string)operBox["name"]); + operHave.Add(tuple); } else { /*未拥有干员,包含预备干员等*/ - operNotHave.Add((string)operBox["name"]); + operNotHave.Add(tuple); } } - /*移除未实装干员*/ - operNotHave = operNotHave.Except(second: VirtuallyOpers).ToList(); + operHave.Sort((x, y) => y.Item2.CompareTo(x.Item2)); + operNotHave.Sort((x, y) => y.Item2.CompareTo(x.Item2)); int newline_flag = 0; string operNotHaveNames = "\t"; - foreach (var name in operNotHave) + foreach (var tuple in operNotHave) { + var name = tuple.Item1; operNotHaveNames += PadRightEx(name, 12) + "\t"; if (newline_flag++ == 3) { @@ -552,8 +560,9 @@ namespace MaaWpfGui.ViewModels.UI newline_flag = 0; string operHaveNames = "\t"; - foreach (var name in operHave) + foreach (var tuple in operHave) { + var name = tuple.Item1; operHaveNames += PadRightEx(name, 12) + "\t"; if (newline_flag++ == 3) {