From 89317859ff935342f0cf8ceabb55e949babba062 Mon Sep 17 00:00:00 2001 From: Tastror Date: Wed, 24 Aug 2022 12:40:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=9F=E4=B8=80gui.json=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E5=86=85=E5=AE=B9=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E5=8C=96=E4=B8=8D=E5=85=BC=E5=AE=B9=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAsstGui/Helper/DragItemViewModel.cs | 26 ++++++ src/MeoAsstGui/Helper/ViewStatusStorage.cs | 20 +++++ .../ViewModels/SettingsViewModel.cs | 22 ++--- .../ViewModels/TaskQueueViewModel.cs | 84 +++++++++++++------ 4 files changed, 117 insertions(+), 35 deletions(-) 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..7146ac545c 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,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()); } } diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 0d96766165..9c30cee075 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -153,21 +153,51 @@ namespace MeoAsstGui } } + + // TODO: Delete this. + + /// + /// Delete old configurations. + /// Note that this feature ought to be removed in later versions. + /// + 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); + } + } + + /// /// 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 +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().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(); }