diff --git a/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.cpp b/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.cpp index 5417e51cfd..81cb864822 100644 --- a/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.cpp +++ b/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.cpp @@ -26,12 +26,10 @@ bool asst::FightSeriesAdjustPlugin::_run() int exceeded_num = get_exceeded_num(); if (exceeded_num <= 6 && exceeded_num > 1) { ProcessTask(*this, { "FightSeries-List-" + std::to_string(exceeded_num - 1) }).run(); - auto modified_next = original_close_stone_page_next; - modified_next.insert(modified_next.begin(), "Fight@StartButton1"); - Task.get("Fight@CloseStonePage")->next = modified_next; + set_close_stone_page_next(true); } else { - Task.get("Fight@CloseStonePage")->next = original_close_stone_page_next; + set_close_stone_page_next(false); } return true; } diff --git a/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.h b/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.h index 4dd78f0727..ab4d02ce86 100644 --- a/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.h +++ b/src/MaaCore/Task/Fight/FightSeriesAdjustPlugin.h @@ -12,12 +12,15 @@ public: virtual bool verify(AsstMsg msg, const json::value& details) const override; + void set_close_stone_page_next(bool enable) const { Task.get("Fight@CloseStonePage")->next = enable ? modified_close_stone_page_next : original_close_stone_page_next; }; + protected: virtual bool _run() override; private: // 临时处理 std::vector original_close_stone_page_next = { "Fight@StageSNReturnFlag", "Fight@Stop" }; + std::vector modified_close_stone_page_next = { "Fight@StartButton1", "Fight@StageSNReturnFlag", "Fight@Stop" }; int get_exceeded_num() const; }; } diff --git a/src/MaaCore/Task/Interface/FightTask.cpp b/src/MaaCore/Task/Interface/FightTask.cpp index f87031f6eb..da462f958e 100644 --- a/src/MaaCore/Task/Interface/FightTask.cpp +++ b/src/MaaCore/Task/Interface/FightTask.cpp @@ -73,11 +73,19 @@ bool asst::FightTask::set_params(const json::value& params) const int expiring_medicine = params.get("expiring_medicine", 0); const int stone = params.get("stone", 0); const int times = params.get("times", INT_MAX); - const int series = params.get("series", 1); - if (series < 1 || series > 6) { + int series = params.get("series", 1); + + m_fight_series_adjust_plugin_ptr->set_close_stone_page_next(false); + m_fight_series_adjust_plugin_ptr->set_enable(false); + if (series == 1000) { + m_fight_series_adjust_plugin_ptr->set_enable(true); + series = 6; + } + else if (series < 1 || series > 6) { Log.error("Invalid series"); return false; } + bool enable_penguin = params.get("report_to_penguin", false); bool enable_yituliu = params.get("report_to_yituliu", false); std::string penguin_id = params.get("penguin_id", ""); diff --git a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs index 359a8e2807..1a324dbab6 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/FightSettingsUserControlModel.cs @@ -103,10 +103,16 @@ public class FightSettingsUserControlModel : TaskViewModel { "炭", "SK-5" }, }; - /// - /// Gets or private sets the list of series. - /// - public List SeriesList { get; private set; } = Enumerable.Range(1, 6).ToList(); + public Dictionary SeriesList { get; } = new() + { + { "AUTO", 1000 }, + { "6", 6 }, + { "5", 5 }, + { "4", 4 }, + { "3", 6 }, + { "2", 2 }, + { "1", 1 }, + }; public string?[] Stages => [Stage1, Stage2, Stage3]; @@ -465,7 +471,7 @@ public class FightSettingsUserControlModel : TaskViewModel } } - private int _series = ConfigurationHelper.GetValue(ConfigurationKeys.SeriesQuantity, 1); + private int _series = ConfigurationHelper.GetValue(ConfigurationKeys.SeriesQuantity, 1000); /// /// Gets or sets the max number of times. diff --git a/src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml b/src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml index b84e8637c9..0970cca5f6 100644 --- a/src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml +++ b/src/MaaWpfGui/Views/UserControl/TaskQueue/FightSettingsUserControl.xaml @@ -170,7 +170,9 @@ IsHitTestVisible="{c:Binding !FightTaskRunning, Source={x:Static helper:Instances.TaskQueueViewModel}}" ItemsSource="{Binding SeriesList}" - SelectedValue="{Binding Series}" /> + SelectedValue="{Binding Series}" + DisplayMemberPath="Key" + SelectedValuePath="Value" />