From 7ee9415863969a2b3e9dee0df7944906d4f18bee Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Mon, 22 Jul 2024 16:28:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20AbstractTask=E6=96=B0=E5=A2=9E=E9=99=84?= =?UTF-8?q?=E5=8A=A0=E5=B7=B2=E6=9C=89=E6=8F=92=E4=BB=B6=E3=80=81=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E6=9F=A5=E6=89=BE=20(#9816)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 新增插件查找 * feat: AbstractTask增加附加已有插件 * perf: attach -> append --- src/MaaCore/Task/AbstractTask.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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; }