From df9791e5d9dee89d3c784cff27a0155fa71870ca Mon Sep 17 00:00:00 2001 From: Weiyou Wang Date: Mon, 8 Jul 2024 20:24:12 +1000 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=82=89=E9=B8=BD=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E4=B8=BB=E9=A2=98=E9=80=89=E6=8B=A9=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=9A=84=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 79 +++++++++++--------- src/MaaCore/Task/Interface/RoguelikeTask.h | 1 + 2 files changed, 45 insertions(+), 35 deletions(-) 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); }; }