diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 92cc2f681f..0e554942e2 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -38,41 +38,6 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst LogTraceFunction; m_roguelike_task_ptr->set_ignore_error(true); - m_roguelike_task_ptr->register_plugin(); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_debug_plugin_ptr = m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr)->set_retry_times(0); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - - m_custom_start_plugin_ptr = - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) - ->set_retry_times(0) - .set_ignore_error(true); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) - ->set_retry_times(2) - .set_ignore_error(true); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) - ->set_retry_times(2) - .set_ignore_error(true); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) - ->set_retry_times(0); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); - - m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); // 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加亿点。先这样凑合用 for (int i = 0; i != 999; ++i) { @@ -91,6 +56,8 @@ bool asst::RoguelikeTask::set_params(const json::value& params) return false; } + m_roguelike_register_plugins(theme); + auto mode = static_cast(params.get("mode", 0)); if (!RoguelikeConfig::is_valid_mode(mode, theme)) { m_roguelike_task_ptr->set_tasks({ "Stop" }); @@ -206,3 +173,45 @@ bool asst::RoguelikeTask::set_params(const json::value& params) : "0"); // 是否可以是非好友助战干员 return true; } + +void asst::RoguelikeTask::m_roguelike_register_plugins(std::string theme) { + // 通用插件 + m_roguelike_task_ptr->register_plugin(); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_debug_plugin_ptr = m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr)->set_retry_times(0); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + + m_custom_start_plugin_ptr = + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) + ->set_retry_times(0) + .set_ignore_error(true); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) + ->set_retry_times(2) + .set_ignore_error(true); + + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) + ->set_retry_times(2) + .set_ignore_error(true); + + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr) + ->set_retry_times(0); + + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + + // 萨米肉鸽专用插件 + if (theme == RoguelikeTheme::Sami) { + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + + m_roguelike_task_ptr->register_plugin(m_roguelike_config_ptr); + } +}; \ No newline at end of file diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.h b/src/MaaCore/Task/Interface/RoguelikeTask.h index a040e2dff6..a90f60f9ff 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.h +++ b/src/MaaCore/Task/Interface/RoguelikeTask.h @@ -23,6 +23,7 @@ namespace asst std::shared_ptr m_roguelike_config_ptr = nullptr; std::shared_ptr m_custom_start_plugin_ptr = nullptr; std::shared_ptr m_debug_plugin_ptr = nullptr; + void m_roguelike_register_plugins(std::string theme); }; }