summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-05-22 15:27:19 +0200
committerMikaël Capelle <capelle.mikael@gmail.com>2020-05-22 15:27:19 +0200
commit5fc66d879391135878e06ee25a32526b9d5c59d9 (patch)
tree4953a926d036f0b908f1d47851b8b9878cb93d31 /src
parentc0035ada020fe90085c698c0829f771c8d542031 (diff)
Move m_GamePlugin up into ModInfoWithConflictInfo.
Diffstat (limited to 'src')
-rw-r--r--src/modinfo.cpp9
-rw-r--r--src/modinfo.h4
-rw-r--r--src/modinfoforeign.cpp3
-rw-r--r--src/modinfoforeign.h1
-rw-r--r--src/modinfooverwrite.cpp4
-rw-r--r--src/modinfooverwrite.h2
-rw-r--r--src/modinforegular.cpp3
-rw-r--r--src/modinforegular.h3
-rw-r--r--src/modinfoseparator.h8
-rw-r--r--src/modinfowithconflictinfo.cpp7
-rw-r--r--src/modinfowithconflictinfo.h10
11 files changed, 33 insertions, 21 deletions
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 7f888bdc..379fa071 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -97,11 +97,12 @@ ModInfo::Ptr ModInfo::createFromPlugin(const QString &modName,
const QString &espName,
const QStringList &bsaNames,
ModInfo::EModType modType,
+ const MOBase::IPluginGame* game,
DirectoryEntry **directoryStructure,
PluginContainer *pluginContainer) {
QMutexLocker locker(&s_Mutex);
ModInfo::Ptr result = ModInfo::Ptr(
- new ModInfoForeign(modName, espName, bsaNames, modType, directoryStructure, pluginContainer));
+ new ModInfoForeign(modName, espName, bsaNames, modType, game, directoryStructure, pluginContainer));
s_Collection.push_back(result);
return result;
}
@@ -128,11 +129,12 @@ QString ModInfo::getContentTypeName(int contentType)
}
void ModInfo::createFromOverwrite(PluginContainer *pluginContainer,
+ const MOBase::IPluginGame* game,
MOShared::DirectoryEntry **directoryStructure)
{
QMutexLocker locker(&s_Mutex);
- s_Collection.push_back(ModInfo::Ptr(new ModInfoOverwrite(pluginContainer, directoryStructure)));
+ s_Collection.push_back(ModInfo::Ptr(new ModInfoOverwrite(pluginContainer, game, directoryStructure)));
}
unsigned int ModInfo::getNumMods()
@@ -274,12 +276,13 @@ void ModInfo::updateFromDisc(const QString &modDirectory,
unmanaged->referenceFile(modName).absoluteFilePath(),
unmanaged->secondaryFiles(modName),
modType,
+ game,
directoryStructure,
pluginContainer);
}
}
- createFromOverwrite(pluginContainer, directoryStructure);
+ createFromOverwrite(pluginContainer, game, directoryStructure);
std::sort(s_Collection.begin(), s_Collection.end(), ModInfo::ByName);
diff --git a/src/modinfo.h b/src/modinfo.h
index 2c108378..f582cc32 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -232,7 +232,8 @@ public:
* @param bsaNames names of archives
* @return a new mod
*/
- static ModInfo::Ptr createFromPlugin(const QString &modName, const QString &espName, const QStringList &bsaNames, ModInfo::EModType modType, MOShared::DirectoryEntry **directoryStructure, PluginContainer *pluginContainer);
+ static ModInfo::Ptr createFromPlugin(const QString &modName, const QString &espName, const QStringList &bsaNames, ModInfo::EModType modType,
+ const MOBase::IPluginGame* game, MOShared::DirectoryEntry **directoryStructure, PluginContainer *pluginContainer);
// whether the given name is used for separators
//
@@ -826,6 +827,7 @@ protected:
private:
static void createFromOverwrite(PluginContainer *pluginContainer,
+ const MOBase::IPluginGame* game,
MOShared::DirectoryEntry **directoryStructure);
protected:
diff --git a/src/modinfoforeign.cpp b/src/modinfoforeign.cpp
index e8f9548a..19413891 100644
--- a/src/modinfoforeign.cpp
+++ b/src/modinfoforeign.cpp
@@ -46,9 +46,10 @@ ModInfoForeign::ModInfoForeign(const QString &modName,
const QString &referenceFile,
const QStringList &archives,
ModInfo::EModType modType,
+ const MOBase::IPluginGame* gamePlugin,
DirectoryEntry **directoryStructure,
PluginContainer *pluginContainer)
- : ModInfoWithConflictInfo(pluginContainer, directoryStructure),
+ : ModInfoWithConflictInfo(pluginContainer, gamePlugin, directoryStructure),
m_ReferenceFile(referenceFile), m_Archives(archives), m_ModType(modType)
{
m_CreationTime = QFileInfo(referenceFile).birthTime();
diff --git a/src/modinfoforeign.h b/src/modinfoforeign.h
index da2c865b..ae4241ee 100644
--- a/src/modinfoforeign.h
+++ b/src/modinfoforeign.h
@@ -71,6 +71,7 @@ public:
protected:
ModInfoForeign(const QString &modName, const QString &referenceFile,
const QStringList &archives, ModInfo::EModType modType,
+ const MOBase::IPluginGame *gamePlugin,
MOShared::DirectoryEntry **directoryStructure, PluginContainer *pluginContainer);
private:
diff --git a/src/modinfooverwrite.cpp b/src/modinfooverwrite.cpp
index 1f7f9318..3b914134 100644
--- a/src/modinfooverwrite.cpp
+++ b/src/modinfooverwrite.cpp
@@ -6,8 +6,8 @@
#include <QApplication>
#include <QDirIterator>
-ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure)
- : ModInfoWithConflictInfo(pluginContainer, directoryStructure)
+ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer, const MOBase::IPluginGame *game, MOShared::DirectoryEntry **directoryStructure)
+ : ModInfoWithConflictInfo(pluginContainer, game, directoryStructure)
{
testValid();
}
diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h
index 0bcf6f27..9770ecbb 100644
--- a/src/modinfooverwrite.h
+++ b/src/modinfooverwrite.h
@@ -68,7 +68,7 @@ public:
virtual void addInstalledFile(int, int) override {}
private:
- ModInfoOverwrite(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure );
+ ModInfoOverwrite(PluginContainer *pluginContainer, const MOBase::IPluginGame* game, MOShared::DirectoryEntry **directoryStructure);
};
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index a1ef5701..d89716da 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -25,11 +25,10 @@ namespace {
}
ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGame *game, const QDir &path, DirectoryEntry **directoryStructure)
- : ModInfoWithConflictInfo(pluginContainer, directoryStructure)
+ : ModInfoWithConflictInfo(pluginContainer, game, directoryStructure)
, m_Name(path.dirName())
, m_Path(path.absolutePath())
, m_Repository()
- , m_GamePlugin(game)
, m_GameName(game->gameShortName())
, m_IsAlternate(false)
, m_Converted(false)
diff --git a/src/modinforegular.h b/src/modinforegular.h
index 75b24a6b..0f22b6cb 100644
--- a/src/modinforegular.h
+++ b/src/modinforegular.h
@@ -432,9 +432,6 @@ private:
QString m_CustomURL;
bool m_HasCustomURL;
- // Current game plugin running in MO2:
- MOBase::IPluginGame const* m_GamePlugin;
-
// Game name for the mod, can be different from the actual game running in MO2
// e.g., for Skyrim / Skyrim SE.
QString m_GameName;
diff --git a/src/modinfoseparator.h b/src/modinfoseparator.h
index 80734bcf..4cfb9ea0 100644
--- a/src/modinfoseparator.h
+++ b/src/modinfoseparator.h
@@ -53,10 +53,10 @@ protected:
private:
- ModInfoSeparator
- (
- PluginContainer* pluginContainer, const MOBase::IPluginGame* game, const QDir& path,
- MOShared::DirectoryEntry** directoryStructure);
+ ModInfoSeparator(
+ PluginContainer* pluginContainer,
+ const MOBase::IPluginGame* game, const QDir& path,
+ MOShared::DirectoryEntry** directoryStructure);
};
#endif
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index d0516d06..00f4275c 100644
--- a/src/modinfowithconflictinfo.cpp
+++ b/src/modinfowithconflictinfo.cpp
@@ -6,12 +6,15 @@
#include "shared/fileentry.h"
#include <filesystem>
+#include "qdirfiletree.h"
+
using namespace MOBase;
using namespace MOShared;
namespace fs = std::filesystem;
-ModInfoWithConflictInfo::ModInfoWithConflictInfo(PluginContainer *pluginContainer, DirectoryEntry **directoryStructure)
- : ModInfo(pluginContainer), m_DirectoryStructure(directoryStructure), m_HasLooseOverwrite(false), m_HasHiddenFiles(false) {}
+ModInfoWithConflictInfo::ModInfoWithConflictInfo(
+ PluginContainer *pluginContainer, const MOBase::IPluginGame* gamePlugin, DirectoryEntry **directoryStructure)
+ : ModInfo(pluginContainer), m_GamePlugin(gamePlugin), m_DirectoryStructure(directoryStructure), m_HasLooseOverwrite(false), m_HasHiddenFiles(false) {}
void ModInfoWithConflictInfo::clearCaches()
{
diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h
index 0bb7c422..94a61c62 100644
--- a/src/modinfowithconflictinfo.h
+++ b/src/modinfowithconflictinfo.h
@@ -10,8 +10,6 @@ class ModInfoWithConflictInfo : public ModInfo
public:
- ModInfoWithConflictInfo(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure);
-
std::vector<ModInfo::EConflictFlag> getConflictFlags() const override;
virtual std::vector<ModInfo::EFlag> getFlags() const override;
@@ -43,6 +41,11 @@ protected:
**/
virtual bool doTestValid() const;
+ ModInfoWithConflictInfo(
+ PluginContainer* pluginContainer,
+ const MOBase::IPluginGame* gamePlugin,
+ MOShared::DirectoryEntry** directoryStructure);
+
private:
enum EConflictType {
@@ -80,6 +83,9 @@ private:
private:
+ // Current game plugin running in MO2:
+ MOBase::IPluginGame const* m_GamePlugin;
+
MOShared::DirectoryEntry **m_DirectoryStructure;
mutable EConflictType m_CurrentConflictState;