aboutsummaryrefslogtreecommitdiff
path: root/libs/game_gamebryo/src/gamebryo/gamebryounmanagedmods.cpp
blob: e5c76085b66c77c71163d40105e3861546900e39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "gamebryounmanagedmods.h"
#include "gamegamebryo.h"
#include <pluginsetting.h>

GamebryoUnmangedMods::GamebryoUnmangedMods(const GameGamebryo* game) : m_Game(game) {}

GamebryoUnmangedMods::~GamebryoUnmangedMods() {}

QStringList GamebryoUnmangedMods::mods(bool onlyOfficial) const
{
  QStringList result;

  QStringList dlcPlugins  = m_Game->DLCPlugins();
  QStringList mainPlugins = m_Game->primaryPlugins();

  QDir dataDir(m_Game->dataDirectory());
  for (const QString& fileName : dataDir.entryList({"*.esp", "*.esl", "*.esm"})) {
    if (!mainPlugins.contains(fileName, Qt::CaseInsensitive) &&
        (!onlyOfficial || dlcPlugins.contains(fileName, Qt::CaseInsensitive))) {
      result.append(fileName.chopped(4));  // trims the extension off
    }
  }

  return result;
}

QString GamebryoUnmangedMods::displayName(const QString& modName) const
{
  return modName;
}

QFileInfo GamebryoUnmangedMods::referenceFile(const QString& modName) const
{
  QFileInfoList files =
      m_Game->dataDirectory().entryInfoList(QStringList() << modName + ".es*");
  if (files.size() > 0) {
    return files.at(0);
  } else {
    return QFileInfo();
  }
}

QStringList GamebryoUnmangedMods::secondaryFiles(const QString& modName) const
{
  QStringList archives;
  QDir dataDir = m_Game->dataDirectory();
  for (const QString& archiveName : dataDir.entryList({modName + "*.bsa"})) {
    archives.append(dataDir.absoluteFilePath(archiveName));
  }
  return archives;
}