diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-11-17 12:30:59 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-11-17 12:30:59 +0100 |
| commit | 1e67c3e68dbe4141c9cd3bfd7b29c747fca03753 (patch) | |
| tree | 7733cb4bb0086e6e9d018cae9171c2360d85498b /src/plugincontainer.cpp | |
| parent | 9fd2a757fa0c25c72c6d8927924d0a8668e948c4 (diff) | |
Add core plugins and better messages.
Diffstat (limited to 'src/plugincontainer.cpp')
| -rw-r--r-- | src/plugincontainer.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
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<QString> 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<IPluginGame>(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;
}
|
