From 1e67c3e68dbe4141c9cd3bfd7b29c747fca03753 Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Tue, 17 Nov 2020 12:30:59 +0100 Subject: Add core plugins and better messages. --- src/plugincontainer.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/plugincontainer.cpp') diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp index 8c2ece76..7884498c 100644 --- a/src/plugincontainer.cpp +++ b/src/plugincontainer.cpp @@ -101,6 +101,10 @@ QStringList PluginContainer::pluginInterfaces() // PluginRequirementProxy +const std::set PluginRequirements::s_CorePlugins{ + "INI Bakery" +}; + PluginRequirements::PluginRequirements( PluginContainer* pluginContainer, MOBase::IPlugin* plugin, IOrganizer* proxy, MOBase::IPluginProxy* pluginProxy) @@ -193,6 +197,16 @@ bool PluginRequirements::canEnable() const return problems().empty(); } +bool PluginRequirements::isCorePlugin() const +{ + // Let's consider game plugins as "core": + if (m_PluginContainer->implementInterface(m_Plugin)) { + return true; + } + + return s_CorePlugins.contains(m_Plugin->name()); +} + bool PluginRequirements::hasRequirements() const { return !m_Requirements.empty(); @@ -405,7 +419,11 @@ bool PluginContainer::initPlugin(IPlugin *plugin, IPluginProxy *pluginProxy, boo auto [it, bl] = m_Requirements.emplace(plugin, PluginRequirements(this, plugin, proxy, pluginProxy)); - if (!skipInit && !plugin->init(proxy)) { + if (skipInit) { + return true; + } + + if (!plugin->init(proxy)) { log::warn("plugin failed to initialize"); return false; } -- cgit v1.3.1