From 88c386d74d7d94ec16d4d84ed674eb51e31647ac Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Sun, 9 Jun 2024 12:18:17 +0200 Subject: Refactoring of game features for better management. (#2043) --- src/profile.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/profile.cpp') diff --git a/src/profile.cpp b/src/profile.cpp index d4299a7b..a0c5a2d4 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -20,6 +20,7 @@ along with Mod Organizer. If not, see . #include "profile.h" #include "filesystemutilities.h" +#include "game_features.h" #include "modinfo.h" #include "modinfoforeign.h" #include "registry.h" @@ -73,9 +74,9 @@ void Profile::touchFile(QString fileName) } Profile::Profile(const QString& name, IPluginGame const* gamePlugin, - bool useDefaultSettings) + GameFeatures const& gameFeatures, bool useDefaultSettings) : m_ModListWriter(std::bind(&Profile::doWriteModlist, this)), - m_GamePlugin(gamePlugin) + m_GamePlugin(gamePlugin), m_GameFeatures(gameFeatures) { QString profilesDir = Settings::instance().paths().profiles(); QDir profileBase(profilesDir); @@ -114,8 +115,9 @@ Profile::Profile(const QString& name, IPluginGame const* gamePlugin, refreshModStatus(); } -Profile::Profile(const QDir& directory, IPluginGame const* gamePlugin) - : m_Directory(directory), m_GamePlugin(gamePlugin), +Profile::Profile(const QDir& directory, IPluginGame const* gamePlugin, + GameFeatures const& gameFeatures) + : m_Directory(directory), m_GamePlugin(gamePlugin), m_GameFeatures(gameFeatures), m_ModListWriter(std::bind(&Profile::doWriteModlist, this)) { assert(gamePlugin != nullptr); @@ -138,7 +140,7 @@ Profile::Profile(const QDir& directory, IPluginGame const* gamePlugin) Profile::Profile(const Profile& reference) : m_Directory(reference.m_Directory), m_ModListWriter(std::bind(&Profile::doWriteModlist, this)), - m_GamePlugin(reference.m_GamePlugin) + m_GamePlugin(reference.m_GamePlugin), m_GameFeatures(reference.m_GameFeatures) { m_Settings = @@ -191,9 +193,9 @@ void Profile::findProfileSettings() } if (setting("", "AutomaticArchiveInvalidation") == QVariant()) { - BSAInvalidation* invalidation = m_GamePlugin->feature(); - DataArchives* dataArchives = m_GamePlugin->feature(); - bool found = false; + auto invalidation = m_GameFeatures.gameFeature(); + auto dataArchives = m_GameFeatures.gameFeature(); + bool found = false; if ((invalidation != nullptr) && (dataArchives != nullptr)) { for (const QString& archive : dataArchives->archives(this)) { if (invalidation->isInvalidationBSA(archive)) { @@ -731,7 +733,7 @@ Profile* Profile::createPtrFrom(const QString& name, const Profile& reference, { QString profileDirectory = Settings::instance().paths().profiles() + "/" + name; reference.copyFilesTo(profileDirectory); - return new Profile(QDir(profileDirectory), gamePlugin); + return new Profile(QDir(profileDirectory), gamePlugin, reference.m_GameFeatures); } void Profile::copyFilesTo(QString& target) const @@ -811,8 +813,8 @@ void Profile::mergeTweaks(ModInfo::Ptr modInfo, const QString& tweakedIni) const bool Profile::invalidationActive(bool* supported) const { - BSAInvalidation* invalidation = m_GamePlugin->feature(); - DataArchives* dataArchives = m_GamePlugin->feature(); + auto invalidation = m_GameFeatures.gameFeature(); + auto dataArchives = m_GameFeatures.gameFeature(); if (supported != nullptr) { *supported = ((invalidation != nullptr) && (dataArchives != nullptr)); @@ -825,7 +827,7 @@ bool Profile::invalidationActive(bool* supported) const void Profile::deactivateInvalidation() { - BSAInvalidation* invalidation = m_GamePlugin->feature(); + auto invalidation = m_GameFeatures.gameFeature(); if (invalidation != nullptr) { invalidation->deactivate(this); @@ -836,7 +838,7 @@ void Profile::deactivateInvalidation() void Profile::activateInvalidation() { - BSAInvalidation* invalidation = m_GamePlugin->feature(); + auto invalidation = m_GameFeatures.gameFeature(); if (invalidation != nullptr) { invalidation->activate(this); -- cgit v1.3.1