summaryrefslogtreecommitdiff
path: root/src/plugincontainer.cpp
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2024-06-09 12:18:17 +0200
committerGitHub <noreply@github.com>2024-06-09 12:18:17 +0200
commit88c386d74d7d94ec16d4d84ed674eb51e31647ac (patch)
treeadf0b2537f12d11d8df77f68a84926d15b063554 /src/plugincontainer.cpp
parentc43535f5bcf1043c3b9c00c77967267cf1acf60f (diff)
Refactoring of game features for better management. (#2043)
Diffstat (limited to 'src/plugincontainer.cpp')
-rw-r--r--src/plugincontainer.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/plugincontainer.cpp b/src/plugincontainer.cpp
index 157d3399..c73d4566 100644
--- a/src/plugincontainer.cpp
+++ b/src/plugincontainer.cpp
@@ -320,7 +320,9 @@ void PluginRequirements::requiredFor(std::vector<MOBase::IPlugin*>& required,
// PluginContainer
PluginContainer::PluginContainer(OrganizerCore* organizer)
- : m_Organizer(organizer), m_UserInterface(nullptr), m_PreviewGenerator(*this)
+ : m_Organizer(organizer), m_UserInterface(nullptr),
+ m_GameFeatures(std::make_unique<GameFeatures>(organizer, this)),
+ m_PreviewGenerator(*this)
{}
PluginContainer::~PluginContainer()
@@ -625,12 +627,12 @@ IPlugin* PluginContainer::registerPlugin(QObject* plugin, const QString& filepat
return nullptr;
}
-IPlugin* PluginContainer::managedGame() const
+IPluginGame* PluginContainer::managedGame() const
{
// TODO: This const_cast is safe but ugly. Most methods require a IPlugin*, so
// returning a const-version if painful. This should be fixed by making methods accept
// a const IPlugin* instead, but there are a few tricks with qobject_cast and const.
- return const_cast<IPluginGame*>(m_Organizer->managedGame());
+ return m_Organizer ? const_cast<IPluginGame*>(m_Organizer->managedGame()) : nullptr;
}
bool PluginContainer::isEnabled(IPlugin* plugin) const
@@ -663,9 +665,8 @@ void PluginContainer::setEnabled(MOBase::IPlugin* plugin, bool enable,
// If required, disable dependencies:
if (!enable && dependencies) {
for (auto* p : requirements(plugin).requiredFor()) {
- setEnabled(
- p, false,
- false); // No need to "recurse" here since requiredFor already does it.
+ // No need to "recurse" here since requiredFor already does it.
+ setEnabled(p, false, false);
}
}
@@ -760,11 +761,6 @@ IPluginGame* PluginContainer::game(const QString& name) const
}
}
-const PreviewGenerator& PluginContainer::previewGenerator() const
-{
- return m_PreviewGenerator;
-}
-
void PluginContainer::startPluginsImpl(const std::vector<QObject*>& plugins) const
{
// setUserInterface()