From c7131b167fdf4e29daca3ed9d151c6d13069deda Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 2 Jul 2022 11:21:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E5=88=97=E8=A1=A8=E9=9A=94=E6=97=A5=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/TaskQueueViewModel.cs | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 793f4d67d0..7dbde09a0e 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -90,14 +90,18 @@ namespace MeoAsstGui private void InitTimer() { _timer.Enabled = true; - _timer.Interval = 1000 * 60; + _timer.Interval = 1000 * 50; _timer.Tick += new EventHandler(Timer1_Elapsed); _timer.Start(); } private void Timer1_Elapsed(object sender, EventArgs e) { - UpdateDatePrompt(); + if (CheckAndUpdateDayOfWeek()) + { + UpdateDatePrompt(); + UpdateStageList(); + } int intMinute = DateTime.Now.Minute; @@ -218,29 +222,27 @@ namespace MeoAsstGui }; InitDrops(); + CheckAndUpdateDayOfWeek(); UpdateDatePrompt(); UpdateStageList(); } + private Dictionary, string>> _stageAvailableInfo; + private DayOfWeek _curDayOfWeek; + public void UpdateStageList() { - var now = DateTime.Now; - var hour = now.Hour; - if (hour >= 0 && hour < 4) - { - now = now.AddDays(-1); - } - + ObservableCollection newList; var settingsModel = _container.Get(); if (settingsModel.HideUnavailableStage) { - var newList = new ObservableCollection { }; + newList = new ObservableCollection { }; foreach (var item in AllStageList) { if (_stageAvailableInfo.ContainsKey(item.Value)) { var info = _stageAvailableInfo[item.Value]; - if (info.Item1.Contains(now.DayOfWeek)) + if (info.Item1.Contains(_curDayOfWeek)) { newList.Add(item); } @@ -250,12 +252,18 @@ namespace MeoAsstGui newList.Add(item); } } - StageList = newList; } else { - StageList = new ObservableCollection(AllStageList); + newList = new ObservableCollection(AllStageList); } + if (StageList == newList) + { + return; + } + + StageList = newList; + bool hasSavedValue = false; foreach (var item in StageList) { @@ -271,9 +279,7 @@ namespace MeoAsstGui } } - private Dictionary, string>> _stageAvailableInfo; - - public void UpdateDatePrompt() + private bool CheckAndUpdateDayOfWeek() { var now = DateTime.Now; var hour = now.Hour; @@ -282,19 +288,33 @@ namespace MeoAsstGui now = now.AddDays(-1); } + if (_curDayOfWeek == now.DayOfWeek) + { + return false; + } + else + { + _curDayOfWeek = now.DayOfWeek; + return true; + } + } + + public void UpdateDatePrompt() + { var prompt = "今日关卡小提示:\n"; foreach (var item in _stageAvailableInfo) { - if (item.Value.Item1.Contains(now.DayOfWeek) && item.Value.Item2 != String.Empty) + if (item.Value.Item1.Contains(_curDayOfWeek) && item.Value.Item2 != String.Empty) { prompt += item.Value.Item2 + "\n"; } } - if (StagesOfToday != prompt) + if (StagesOfToday == prompt) { - StagesOfToday = prompt; + return; } + StagesOfToday = prompt; } private string _stagesOfToday = "";