feat: 统一gui.json保存的内容,解决本地化不兼容问题

This commit is contained in:
Tastror
2022-08-24 12:40:28 +08:00
parent 02163d504b
commit 044bedca92
4 changed files with 117 additions and 35 deletions

View File

@@ -28,10 +28,36 @@ namespace MeoAsstGui
public DragItemViewModel(string name, string storageKey)
{
this.Name = name;
this.OriginalName = name;
this._isCheckedStorageKey = storageKey + name + ".IsChecked";
this.IsChecked = System.Convert.ToBoolean(ViewStatusStorage.Get(_isCheckedStorageKey, bool.TrueString));
}
/// <summary>
/// Initializes a new instance of the <see cref="DragItemViewModel"/> class.
/// </summary>
/// <param name="name">The name (viewed name).</param>
/// <param name="original_name">The original name (may not be the same as viewed name).</param>
/// <param name="storageKey">The storage key.</param>
public DragItemViewModel(string name, string original_name, string storageKey)
{
this.Name = name;
this.OriginalName = original_name;
this._isCheckedStorageKey = storageKey + original_name + ".IsChecked";
this.IsChecked = System.Convert.ToBoolean(ViewStatusStorage.Get(_isCheckedStorageKey, bool.TrueString));
}
private string _original_name;
/// <summary>
/// Gets or sets the original_name.
/// </summary>
public string OriginalName
{
get { return _original_name; }
set { SetAndNotify(ref _original_name, value); }
}
private string _name;
/// <summary>

View File

@@ -101,6 +101,26 @@ namespace MeoAsstGui
return true;
}
/// <summary>
/// Deletes configuration.
/// </summary>
/// <param name="key">The key.</param>
/// <returns>Whether the operation is successful.</returns>
public static bool Delete(string key)
{
try
{
_viewStatus.Remove(key);
Save();
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// Saves configuration.
/// </summary>

View File

@@ -119,13 +119,13 @@ namespace MeoAsstGui
/* 基建设置 */
var facility_list = new string[]
{
Localization.GetString("Mfg"),
Localization.GetString("Trade"),
Localization.GetString("Control"),
Localization.GetString("Power"),
Localization.GetString("Reception"),
Localization.GetString("Office"),
Localization.GetString("Dorm"),
"Mfg",
"Trade",
"Control",
"Power",
"Reception",
"Office",
"Dorm",
};
var temp_order_list = new List<DragItemViewModel>(new DragItemViewModel[facility_list.Length]);
@@ -136,11 +136,11 @@ namespace MeoAsstGui
if (!parsed || order < 0)
{
temp_order_list[i] = new DragItemViewModel(facility, "Infrast.");
temp_order_list[i] = new DragItemViewModel(Localization.GetString(facility), facility, "Infrast.");
}
else
{
temp_order_list[order] = new DragItemViewModel(facility, "Infrast.");
temp_order_list[order] = new DragItemViewModel(Localization.GetString(facility), facility, "Infrast.");
}
}
@@ -574,7 +574,7 @@ namespace MeoAsstGui
continue;
}
orderList.Add(_facilityKey[item.Name]);
orderList.Add(_facilityKey[item.OriginalName]);
}
return orderList;
@@ -587,7 +587,7 @@ namespace MeoAsstGui
{
for (int i = 0; i < InfrastItemViewModels.Count; i++)
{
ViewStatusStorage.Set("Infrast.Order." + InfrastItemViewModels[i].Name, i.ToString());
ViewStatusStorage.Set("Infrast.Order." + InfrastItemViewModels[i].OriginalName, i.ToString());
}
}

View File

@@ -153,21 +153,51 @@ namespace MeoAsstGui
}
}
// TODO: Delete this.
/// <summary>
/// Delete old configurations.
/// Note that this feature ought to be removed in later versions.
/// </summary>
public void DeleteOldConfig()
{
string[] old_list_name = new string[]
{
"开始唤醒", "自动公招", "基建换班", "刷理智", "访问好友", "收取信用及购物", "领取日常奖励", "自动肉鸽",
"宿舍", "制造站", "贸易站", "发电站", "会客室", "办公室", "控制中枢",
"ウェイクアップ", "公開求人", "基地仕事", "作戦", "戦友訪問", "FP交換", "報酬受取", "自動ローグ",
"宿舎", "製造所", "貿易所", "発電所", "応接室", "事務所", "制御中枢",
"웨이크업", "공개모집", "기반시설 교대", "작전", "친구 방문", "상점", "일일 퀘스트 보상을 수집", "통합전략",
"숙소", "제조소", "무역소", "발전소", "응접실", "사무실", "제어 센터",
};
foreach (var name in old_list_name)
{
ViewStatusStorage.Delete("TaskQueue." + name + ".IsChecked");
ViewStatusStorage.Delete("TaskQueue.Order." + name);
ViewStatusStorage.Delete("Infrast." + name + ".IsChecked");
ViewStatusStorage.Delete("Infrast.Order." + name);
}
}
/// <summary>
/// Initializes items.
/// </summary>
public void InitializeItems()
{
DeleteOldConfig();
string[] task_list = new string[]
{
Localization.GetString("WakeUp"),
Localization.GetString("Recruiting"),
Localization.GetString("Base"),
Localization.GetString("Combat"),
Localization.GetString("Visiting"),
Localization.GetString("Mall"),
Localization.GetString("Mission"),
Localization.GetString("AutoRoguelike"),
"WakeUp",
"Recruiting",
"Base",
"Combat",
"Visiting",
"Mall",
"Mission",
"AutoRoguelike",
};
ActionAfterCompletedList = new List<GenericCombData<ActionType>>
{
@@ -189,8 +219,8 @@ namespace MeoAsstGui
int order;
bool parsed = int.TryParse(ViewStatusStorage.Get("TaskQueue.Order." + task, "-1"), out order);
var vm = new DragItemViewModel(task, "TaskQueue.");
if (task == Localization.GetString("AutoRoguelike"))
var vm = new DragItemViewModel(Localization.GetString(task), task, "TaskQueue.");
if (task == "AutoRoguelike")
{
vm.IsChecked = false;
}
@@ -443,7 +473,7 @@ namespace MeoAsstGui
{
foreach (var item in TaskItemViewModels)
{
if (item.Name == Localization.GetString("AutoRoguelike"))
if (item.OriginalName == "AutoRoguelike")
{
continue;
}
@@ -606,7 +636,7 @@ namespace MeoAsstGui
{
foreach (var item in TaskItemViewModels)
{
if (item.Name == Localization.GetString("AutoRoguelike"))
if (item.OriginalName == "AutoRoguelike")
{
continue;
}
@@ -635,6 +665,16 @@ namespace MeoAsstGui
Idle = false;
// 点击开始后先保存两大顺序:任务顺序和基建顺序
// TODO: optimize me: 要不要改成类似 check在拖动后保存
int index = 0;
foreach (var item in TaskItemViewModels)
{
ViewStatusStorage.Set("TaskQueue.Order." + item.OriginalName, index.ToString());
++index;
}
_container.Get<SettingsViewModel>().SaveInfrastOrderList();
ClearLog();
AddLog(Localization.GetString("ConnectingToEmulator"));
@@ -678,47 +718,43 @@ namespace MeoAsstGui
// 直接遍历TaskItemViewModels里面的内容是排序后的
int count = 0;
int index = 0;
foreach (var item in TaskItemViewModels)
{
ViewStatusStorage.Set("TaskQueue.Order." + item.Name, index.ToString());
++index;
if (item.IsChecked == false)
{
continue;
}
++count;
if (item.Name == Localization.GetString("Base"))
if (item.OriginalName == "Base")
{
ret &= appendInfrast();
}
else if (item.Name == Localization.GetString("WakeUp"))
else if (item.OriginalName == "WakeUp")
{
ret &= appendStart();
}
else if (item.Name == Localization.GetString("Combat"))
else if (item.OriginalName == "Combat")
{
ret &= appendFight();
}
else if (item.Name == Localization.GetString("Recruiting"))
else if (item.OriginalName == "Recruiting")
{
ret &= appendRecruit();
}
else if (item.Name == Localization.GetString("Visiting"))
else if (item.OriginalName == "Visiting")
{
ret &= asstProxy.AsstAppendVisit();
}
else if (item.Name == Localization.GetString("Mall"))
else if (item.OriginalName == "Mall")
{
ret &= appendMall();
}
else if (item.Name == Localization.GetString("Mission"))
else if (item.OriginalName == "Mission")
{
ret &= asstProxy.AsstAppendAward();
}
else if (item.Name == Localization.GetString("AutoRoguelike"))
else if (item.OriginalName == "AutoRoguelike")
{
ret &= appendRoguelike();
}