Skip to content

Commit 352975e

Browse files
committed
updated to use the unmanaged-mod game plugin feature
1 parent cd83f4e commit 352975e

File tree

4 files changed

+24
-35
lines changed

4 files changed

+24
-35
lines changed

src/modinfo.cpp

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
3535
#include <versioninfo.h>
3636
#include <appconfig.h>
3737
#include <scriptextender.h>
38+
#include <unmanagedmods.h>
3839

3940
#include <QApplication>
4041
#include <QDirIterator>
@@ -75,11 +76,13 @@ ModInfo::Ptr ModInfo::createFrom(const QDir &dir, DirectoryEntry **directoryStru
7576
return result;
7677
}
7778

78-
ModInfo::Ptr ModInfo::createFromPlugin(const QString &espName, const QStringList &bsaNames
79-
, DirectoryEntry ** directoryStructure)
80-
{
79+
ModInfo::Ptr ModInfo::createFromPlugin(const QString &modName,
80+
const QString &espName,
81+
const QStringList &bsaNames,
82+
DirectoryEntry **directoryStructure) {
8183
QMutexLocker locker(&s_Mutex);
82-
ModInfo::Ptr result = ModInfo::Ptr(new ModInfoForeign(espName, bsaNames, directoryStructure));
84+
ModInfo::Ptr result = ModInfo::Ptr(
85+
new ModInfoForeign(modName, espName, bsaNames, directoryStructure));
8386
s_Collection.push_back(result);
8487
return result;
8588
}
@@ -217,27 +220,13 @@ void ModInfo::updateFromDisc(const QString &modDirectory,
217220
}
218221
}
219222

220-
{ // list plugins in the data directory and make a foreign-managed mod out of each
221-
QStringList dlcPlugins = game->DLCPlugins();
222-
QStringList mainPlugins = game->primaryPlugins();
223-
QDir dataDir(game->dataDirectory());
224-
for (const QString &file : dataDir.entryList({ "*.esp", "*.esm" })) {
225-
if (std::find_if(mainPlugins.begin(), mainPlugins.end(),
226-
[&file](QString const &p) {
227-
return p.compare(file, Qt::CaseInsensitive) == 0; }) == mainPlugins.end()
228-
&& (displayForeign // show non-dlc bundles only if the user wants them
229-
|| std::find_if(dlcPlugins.begin(), dlcPlugins.end(),
230-
[&file](QString const &p) {
231-
return p.compare(file, Qt::CaseInsensitive) == 0; }) != dlcPlugins.end())) {
232-
233-
QFileInfo f(file); //Just so I can get a basename...
234-
QStringList archives;
235-
for (const QString &archiveName : dataDir.entryList({ f.baseName() + "*.bsa" })) {
236-
archives.append(dataDir.absoluteFilePath(archiveName));
237-
}
238-
239-
createFromPlugin(file, archives, directoryStructure);
240-
}
223+
UnmanagedMods *unmanaged = game->feature<UnmanagedMods>();
224+
if (unmanaged != nullptr) {
225+
for (const QString &modName : unmanaged->mods(!displayForeign)) {
226+
createFromPlugin(unmanaged->displayName(modName),
227+
unmanaged->referenceFile(modName).absoluteFilePath(),
228+
unmanaged->secondaryFiles(modName),
229+
directoryStructure);
241230
}
242231
}
243232

src/modinfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class ModInfo : public QObject, public MOBase::IModInterface
186186
* @param bsaNames names of archives
187187
* @return a new mod
188188
*/
189-
static ModInfo::Ptr createFromPlugin(const QString &espName, const QStringList &bsaNames, MOShared::DirectoryEntry **directoryStructure);
189+
static ModInfo::Ptr createFromPlugin(const QString &modName, const QString &espName, const QStringList &bsaNames, MOShared::DirectoryEntry **directoryStructure);
190190

191191
/**
192192
* @brief retieve a name for one of the CONTENT_ enums

src/modinfoforeign.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ QString ModInfoForeign::getDescription() const
4343
return tr("This pseudo mod represents content managed outside MO. It isn't modified by MO.");
4444
}
4545

46-
ModInfoForeign::ModInfoForeign(const QString &referenceFile, const QStringList &archives,
46+
ModInfoForeign::ModInfoForeign(const QString &modName,
47+
const QString &referenceFile,
48+
const QStringList &archives,
4749
DirectoryEntry **directoryStructure)
48-
: ModInfoWithConflictInfo(directoryStructure)
49-
, m_ReferenceFile(referenceFile)
50-
, m_Archives(archives)
51-
{
50+
: ModInfoWithConflictInfo(directoryStructure),
51+
m_ReferenceFile(referenceFile), m_Archives(archives) {
5252
m_CreationTime = QFileInfo(referenceFile).created();
53-
m_Name = "Unmanaged: " + QFileInfo(m_ReferenceFile).baseName();
53+
m_Name = "Unmanaged: " + modName;
5454
}

src/modinfoforeign.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ class ModInfoForeign : public ModInfoWithConflictInfo
5151
virtual void addInstalledFile(int, int) {}
5252

5353
protected:
54-
55-
ModInfoForeign(const QString &referenceFile, const QStringList &archives, MOShared::DirectoryEntry **directoryStructure);
56-
54+
ModInfoForeign(const QString &modName, const QString &referenceFile,
55+
const QStringList &archives,
56+
MOShared::DirectoryEntry **directoryStructure);
5757
private:
5858

5959
QString m_Name;

0 commit comments

Comments
 (0)