diff --git a/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml b/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml index 999c1ab9bb..c0074ad2f6 100644 --- a/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml +++ b/src/MeoAsstGui/UserControl/InfrastSettingsUserControl.xaml @@ -23,6 +23,7 @@ dd:DragDrop.IsDragSource="True" dd:DragDrop.IsDropTarget="True" ItemsSource="{Binding Path=InfrastItemViewModels}" + SelectionChanged="{s:Action InfrastOrderSelectionChanged}" ToolTip="{DynamicResource LabelSequenceTip}"> diff --git a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs index 7c3f5bd850..00d3f48f5c 100644 --- a/src/MeoAsstGui/ViewModels/SettingsViewModel.cs +++ b/src/MeoAsstGui/ViewModels/SettingsViewModel.cs @@ -528,13 +528,15 @@ namespace MeoAsstGui } /// - /// Saves infrast order list. + /// 实时更新基建换班顺序 /// - public void SaveInfrastOrderList() + public void InfrastOrderSelectionChanged() { - for (int i = 0; i < InfrastItemViewModels.Count; i++) + int index = 0; + foreach (var item in InfrastItemViewModels) { - ViewStatusStorage.Set("Infrast.Order." + InfrastItemViewModels[i].OriginalName, i.ToString()); + ViewStatusStorage.Set("Infrast.Order." + item.OriginalName, index.ToString()); + ++index; } } diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 18e1bb9dc8..6a8ba02d79 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -40,6 +40,19 @@ namespace MeoAsstGui /// public ObservableCollection TaskItemViewModels { get; set; } + /// + /// 实时更新任务顺序 + /// + public void TaskItemSelectionChanged() + { + int index = 0; + foreach (var item in TaskItemViewModels) + { + ViewStatusStorage.Set("TaskQueue.Order." + item.OriginalName, index.ToString()); + ++index; + } + } + /// /// Gets or sets the view models of log items. /// @@ -666,16 +679,9 @@ 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(); + // 虽然更改时已经保存过了,不过保险起见还是在点击开始之后再保存一次任务及基建列表 + TaskItemSelectionChanged(); + _container.Get().InfrastOrderSelectionChanged(); ClearLog(); @@ -912,7 +918,6 @@ namespace MeoAsstGui { var settings = _container.Get(); var order = settings.GetInfrastOrderList(); - settings.SaveInfrastOrderList(); var asstProxy = _container.Get(); return asstProxy.AsstAppendInfrast(order.ToArray(), settings.UsesOfDrones, settings.DormThreshold / 100.0, settings.DormFilterNotStationedEnabled, settings.DormTrustEnabled, settings.OriginiumShardAutoReplenishment); diff --git a/src/MeoAsstGui/Views/TaskQueueView.xaml b/src/MeoAsstGui/Views/TaskQueueView.xaml index e2b4636dce..9589e14c4b 100644 --- a/src/MeoAsstGui/Views/TaskQueueView.xaml +++ b/src/MeoAsstGui/Views/TaskQueueView.xaml @@ -43,7 +43,6 @@ @@ -62,7 +62,7 @@ + IsHitTestVisible="{Binding Path=DataContext.Idle}" />