diff --git a/src/MeoAsstGui/Helper/DragItemViewModel.cs b/src/MeoAsstGui/Helper/DragItemViewModel.cs index 0d8ff45c8b..94fd442700 100644 --- a/src/MeoAsstGui/Helper/DragItemViewModel.cs +++ b/src/MeoAsstGui/Helper/DragItemViewModel.cs @@ -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)); } + /// + /// Initializes a new instance of the class. + /// + /// The name (viewed name). + /// The original name (may not be the same as viewed name). + /// The storage key. + 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; + + /// + /// Gets or sets the original_name. + /// + public string OriginalName + { + get { return _original_name; } + set { SetAndNotify(ref _original_name, value); } + } + private string _name; /// diff --git a/src/MeoAsstGui/Helper/ViewStatusStorage.cs b/src/MeoAsstGui/Helper/ViewStatusStorage.cs index f5eaf3d773..91adedb566 100644 --- a/src/MeoAsstGui/Helper/ViewStatusStorage.cs +++ b/src/MeoAsstGui/Helper/ViewStatusStorage.cs @@ -101,6 +101,26 @@ namespace MeoAsstGui return true; } + /// + /// Deletes configuration. + /// + /// The key. + /// Whether the operation is successful. + public static bool Delete(string key) + { + try + { + _viewStatus.Remove(key); + Save(); + } + catch (Exception) + { + return false; + } + + return true; + } + /// /// Saves configuration. /// diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index b91713b655..e72d9b6ae0 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -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(new DragItemViewModel[facility_list.Length]); @@ -136,24 +136,16 @@ 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."); } } InfrastItemViewModels = new ObservableCollection(temp_order_list); - _facilityKey.Add(Localization.GetString("Dorm"), "Dorm"); - _facilityKey.Add(Localization.GetString("Mfg"), "Mfg"); - _facilityKey.Add(Localization.GetString("Trade"), "Trade"); - _facilityKey.Add(Localization.GetString("Power"), "Power"); - _facilityKey.Add(Localization.GetString("Reception"), "Reception"); - _facilityKey.Add(Localization.GetString("Office"), "Office"); - _facilityKey.Add(Localization.GetString("Control"), "Control"); - UsesOfDronesList = new List { new CombData { Display = Localization.GetString("DronesNotUse"), Value = "_NotUse" }, @@ -480,7 +472,6 @@ namespace MeoAsstGui } /* 基建设置 */ - private readonly Dictionary _facilityKey = new Dictionary(); /// /// Gets or sets the infrast item view models. @@ -574,7 +565,7 @@ namespace MeoAsstGui continue; } - orderList.Add(_facilityKey[item.Name]); + orderList.Add(item.OriginalName); } return orderList; @@ -587,7 +578,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()); } } diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 0d96766165..38887ba83e 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -153,21 +153,94 @@ namespace MeoAsstGui } } + + // TODO: Delete this. + + /// + /// Delete old configurations. + /// Note that this feature ought to be removed in later versions. + /// + public void DeleteOldConfig() + { + + string[] saved_list_name_1 = new string[] + { + "WakeUp", "Recruiting", "Base", "Combat", "Visiting", "Mall", "Mission", "AutoRoguelike", + }; + foreach (var name in saved_list_name_1) + { + string local_name = Localization.GetString(name); + string check = ViewStatusStorage.Get("TaskQueue." + local_name + ".IsChecked", string.Empty); + string order = ViewStatusStorage.Get("TaskQueue.Order." + local_name, string.Empty); + if (check != string.Empty) + { + ViewStatusStorage.Set("TaskQueue." + name + ".IsChecked", check); + } + if (order != string.Empty) + { + ViewStatusStorage.Set("TaskQueue.Order." + name, order); + } + } + + string[] saved_list_name_2 = new string[] + { + "Mfg", "Trade", "Control", "Power", "Reception", "Office", "Dorm", + }; + foreach (var name in saved_list_name_2) + { + string local_name = Localization.GetString(name); + string check = ViewStatusStorage.Get("Infrast." + local_name + ".IsChecked", string.Empty); + string order = ViewStatusStorage.Get("Infrast.Order." + local_name, string.Empty); + if (check != string.Empty) + { + ViewStatusStorage.Set("Infrast." + name + ".IsChecked", check); + } + if (order != string.Empty) + { + ViewStatusStorage.Set("Infrast.Order." + name, order); + } + } + + 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); + } + } + + /// /// Initializes items. /// 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> { @@ -189,8 +262,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 +516,7 @@ namespace MeoAsstGui { foreach (var item in TaskItemViewModels) { - if (item.Name == Localization.GetString("AutoRoguelike")) + if (item.OriginalName == "AutoRoguelike") { continue; } @@ -606,7 +679,7 @@ namespace MeoAsstGui { foreach (var item in TaskItemViewModels) { - if (item.Name == Localization.GetString("AutoRoguelike")) + if (item.OriginalName == "AutoRoguelike") { continue; } @@ -635,6 +708,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().SaveInfrastOrderList(); + ClearLog(); AddLog(Localization.GetString("ConnectingToEmulator")); @@ -678,47 +761,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(); }