mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 10:57:45 +08:00
fix: 修复开局干员搜索的性能和显示问题
This commit is contained in:
@@ -16,6 +16,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using MaaWpfGui.Constants;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
@@ -39,17 +40,51 @@ namespace MaaWpfGui.Helper
|
||||
string jsonText = File.ReadAllText(FilePath);
|
||||
var characterData = JsonConvert.DeserializeObject<Dictionary<string, CharacterInfo>>(JObject.Parse(jsonText)["chars"]?.ToString() ?? string.Empty) ?? new();
|
||||
|
||||
var characterNames_Lang_Add = GetCharacterNamesAddAction(ConfigurationHelper.GetValue(ConfigurationKeys.Localization, LocalizationHelper.DefaultLanguage));
|
||||
var characterNames_client_Add = GetCharacterNamesAddAction(ConfigurationHelper.GetValue(ConfigurationKeys.ClientType, string.Empty));
|
||||
foreach ((var key, var value) in characterData)
|
||||
{
|
||||
Characters.Add(key, value);
|
||||
CharacterNames.Add(value.Name ?? string.Empty);
|
||||
CharacterNames.Add(value.NameEn ?? string.Empty);
|
||||
CharacterNames.Add(value.NameJp ?? string.Empty);
|
||||
CharacterNames.Add(value.NameKr ?? string.Empty);
|
||||
CharacterNames.Add(value.NameTw ?? string.Empty);
|
||||
if (!key.StartsWith("char_"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
characterNames_Lang_Add.Invoke(value);
|
||||
characterNames_client_Add.Invoke(value);
|
||||
}
|
||||
}
|
||||
|
||||
private static Action<CharacterInfo> GetCharacterNamesAddAction(string str)
|
||||
{
|
||||
if (str == "zh-cn" || str == "Official" || str == "Bilibili")
|
||||
{
|
||||
return v => CharacterNames.Add(v.Name ?? string.Empty);
|
||||
}
|
||||
|
||||
if (str == "zh-tw" || str == "txwy")
|
||||
{
|
||||
return v => CharacterNames.Add(v.NameTw ?? string.Empty);
|
||||
}
|
||||
|
||||
if (str == "en-us" || str == "YoStarEN")
|
||||
{
|
||||
return v => CharacterNames.Add(v.NameEn ?? string.Empty);
|
||||
}
|
||||
|
||||
if (str == "ja-jp" || str == "YoStarJP")
|
||||
{
|
||||
return v => CharacterNames.Add(v.NameJp ?? string.Empty);
|
||||
}
|
||||
|
||||
if (str == "ko-kr" || str == "YoStarKR")
|
||||
{
|
||||
return v => CharacterNames.Add(v.NameKr ?? string.Empty);
|
||||
}
|
||||
|
||||
return v => CharacterNames.Add(v.Name ?? string.Empty);
|
||||
}
|
||||
|
||||
public static CharacterInfo? GetCharacterByNameOrAlias(string characterName)
|
||||
{
|
||||
return Characters.Values.FirstOrDefault(
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<system:String x:Key="StartingRoles">Starting Roles</system:String>
|
||||
<system:String x:Key="StartingCoreChar">Starting Operator (single)</system:String>
|
||||
<system:String x:Key="StartingCoreCharTip">If not filled out, the default policy will be used.</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">The agent entered「{0}」is not in battle_data. Check that the name entered is correct, or check the maa resource version.</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">The agent is not in battle_data.</system:String>
|
||||
<system:String x:Key="RoguelikeStartWithEliteTwo">Repeat for「Starting Operator」Elite 2</system:String>
|
||||
<system:String x:Key="RoguelikeOnlyStartWithEliteTwo">Only Repeat for「Starting Operator」Elite 2, No Battle</system:String>
|
||||
<system:String x:Key="Roguelike3FirstFloorFoldartal">Repeat for foldartal foreseed first floor,No Battle</system:String>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<system:String x:Key="StartingRoles">最初の職業</system:String>
|
||||
<system:String x:Key="StartingCoreChar">最初のオペレーター(一人だけ)</system:String>
|
||||
<system:String x:Key="StartingCoreCharTip">記入がない場合はデフォルトの方針を使用します。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">入力のスタッフ「{0}」がbattle_dataにありません。入力の名前が正しいか、maaリソースのバージョンをチェックしてください。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">スタッフがbattle_dataにありません。</system:String>
|
||||
<system:String x:Key="RoguelikeStartWithEliteTwo">「最初のオペレーター」直接昇進</system:String>
|
||||
<system:String x:Key="RoguelikeOnlyStartWithEliteTwo">指定オペレーターの昇進招集までリセマラし、戦闘を行わない</system:String>
|
||||
<system:String x:Key="Roguelike3FirstFloorFoldartal">凹第一層遠見暗号文板、戦闘を行わない</system:String>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<system:String x:Key="StartingRoles">모집 조합</system:String>
|
||||
<system:String x:Key="StartingCoreChar">시작 오퍼레이터 (1명)</system:String>
|
||||
<system:String x:Key="StartingCoreCharTip">작성하지 않으면 기본 설정이 사용됩니다.</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">입력한 오퍼레이터 「{0}」는 battle_data에 없습니다. 입력한 이름이 올바른지 확인하거나 MAA 리소스 버전을 확인하세요.</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">오퍼레이터 는 battle_data에 없습니다.</system:String>
|
||||
<system:String x:Key="RoguelikeStartWithEliteTwo">시작 오퍼레이터 2정예화까지 반복</system:String>
|
||||
<system:String x:Key="RoguelikeOnlyStartWithEliteTwo">시작 오퍼레이터 2정예화까지 반복(전투 X)</system:String>
|
||||
<system:String x:Key="Roguelike3FirstFloorFoldartal">오목 1 층 원견 밀문판(전투 X)</system:String>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<system:String x:Key="StartingRoles">开局职业组</system:String>
|
||||
<system:String x:Key="StartingCoreChar">开局干员 (单个)</system:String>
|
||||
<system:String x:Key="StartingCoreCharTip">不填写则使用默认策略。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">输入的干员「{0}」未在 battle_data 中,请检查输入的名称是否正确,或检查 maa 资源版本。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">输入的干员未在 battle_data 中。</system:String>
|
||||
<system:String x:Key="RoguelikeStartWithEliteTwo">凹「开局干员」直升精二</system:String>
|
||||
<system:String x:Key="RoguelikeOnlyStartWithEliteTwo">只凹「开局干员」直升精二,不进行作战</system:String>
|
||||
<system:String x:Key="Roguelike3FirstFloorFoldartal">凹第一层远见密文板,不进行作战</system:String>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
<system:String x:Key="StartingRoles">開局職業組</system:String>
|
||||
<system:String x:Key="StartingCoreChar">開局幹員(單個)</system:String>
|
||||
<system:String x:Key="StartingCoreCharTip">不填寫則使用預設策略。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">輸入的幹員「{0}」未在 battle_data 中,請檢查輸入的名稱是否正確,或檢查 maa 資源版本。</system:String>
|
||||
<system:String x:Key="RoguelikeStartingCoreCharNotFound">輸入的幹員未在 battle_data 中。</system:String>
|
||||
<system:String x:Key="RoguelikeStartWithEliteTwo">凹「開局幹員」直升精二</system:String>
|
||||
<system:String x:Key="RoguelikeOnlyStartWithEliteTwo">只凹「開局幹員」直升精二,不進行作戰</system:String>
|
||||
<system:String x:Key="Roguelike3FirstFloorFoldartal">凹第一層遠見密文板,不進行作戰</system:String>
|
||||
|
||||
@@ -1951,7 +1951,15 @@ namespace MaaWpfGui.ViewModels.UI
|
||||
public ObservableCollection<string> RoguelikeCoreCharList
|
||||
{
|
||||
get => _roguelikeCoreCharList;
|
||||
private set => SetAndNotify(ref _roguelikeCoreCharList, value);
|
||||
private set
|
||||
{
|
||||
if (!string.IsNullOrEmpty(RoguelikeCoreChar) && !value.Contains(RoguelikeCoreChar))
|
||||
{
|
||||
value.Add(RoguelikeCoreChar);
|
||||
}
|
||||
|
||||
SetAndNotify(ref _roguelikeCoreCharList, value);
|
||||
}
|
||||
}
|
||||
|
||||
private string _roguelikeStartWithEliteTwo = ConfigurationHelper.GetValue(ConfigurationKeys.RoguelikeStartWithEliteTwo, false.ToString());
|
||||
|
||||
@@ -60,9 +60,8 @@
|
||||
Style="{StaticResource ComboBoxExtend}" />
|
||||
<hc:ComboBox
|
||||
Name="StartingCoreCharComboBox"
|
||||
Margin="0,5"
|
||||
Margin="0,5,0,25"
|
||||
hc:InfoElement.Title="{DynamicResource StartingCoreChar}"
|
||||
AutoComplete="True"
|
||||
DropDownClosed="StartingCoreCharComboBox_DropDownClosed"
|
||||
IsEditable="True"
|
||||
IsTextSearchEnabled="False"
|
||||
|
||||
@@ -56,11 +56,6 @@ namespace MaaWpfGui.Views.UserControl
|
||||
if (IsValidResult)
|
||||
{
|
||||
var name = StartingCoreCharComboBox.Text;
|
||||
if (!string.IsNullOrEmpty(name) && !Instances.SettingsViewModel.RoguelikeCoreCharList.Contains(name))
|
||||
{
|
||||
Instances.SettingsViewModel.RoguelikeCoreCharList.Add(name);
|
||||
}
|
||||
|
||||
StartingCoreCharComboBox.ItemsSource = Instances.SettingsViewModel.RoguelikeCoreCharList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user