diff --git a/src/MaaCore/Task/AbstractTask.h b/src/MaaCore/Task/AbstractTask.h index a95f909e23..fdd5a71a07 100644 --- a/src/MaaCore/Task/AbstractTask.h +++ b/src/MaaCore/Task/AbstractTask.h @@ -47,6 +47,25 @@ namespace asst m_plugins.emplace_back(plugin); return plugin; } + + template + requires std::derived_from // Plugin must inherit AbstractTaskPlugin + void append_plugin(const std::shared_ptr& plugin) + { + m_plugins.emplace_back(plugin); + } + + template + requires std::derived_from + std::shared_ptr find_plugin() + { + for (const auto& plugin : m_plugins) { + if (auto ptr = std::dynamic_pointer_cast(plugin)) { + return ptr; + } + } + return nullptr; + } void clear_plugin() noexcept; bool get_enable() const noexcept { return m_enable; }