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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include "fallout4bsainvalidation.h"
#include "dummybsa.h"
#include "iplugingame.h"
#include "iprofile.h"
#include "registry.h"
#include <imoinfo.h>
#include <utility.h>
#include "gamegamebryo.h"
Fallout4BSAInvalidation::Fallout4BSAInvalidation(MOBase::DataArchives* dataArchives,
MOBase::IPluginGame const* game)
: GamebryoBSAInvalidation(dataArchives, "Fallout4Custom.ini", game)
{
m_IniFileName = "Fallout4Custom.ini";
m_Game = game;
}
bool Fallout4BSAInvalidation::isInvalidationBSA(const QString& bsaName)
{
return false;
}
QString Fallout4BSAInvalidation::invalidationBSAName() const
{
return "";
}
unsigned long Fallout4BSAInvalidation::bsaVersion() const
{
return 0x68;
}
bool Fallout4BSAInvalidation::prepareProfile(MOBase::IProfile* profile)
{
bool dirty = false;
QString basePath = profile->localSettingsEnabled()
? profile->absolutePath()
: m_Game->documentsDirectory().absolutePath();
QString iniFilePath = basePath + "/" + m_IniFileName;
if (profile->invalidationActive(nullptr)) {
// write bInvalidateOlderFiles = 1, if needed
QString bInvalidateOlderFiles = GameGamebryo::readIniValue(
iniFilePath, "Archive", "bInvalidateOlderFiles", "0");
if (bInvalidateOlderFiles.toLong() != 1) {
dirty = true;
if (!MOBase::WriteRegistryValue("Archive", "bInvalidateOlderFiles", "1",
iniFilePath)) {
qWarning("failed to override data directory in \"%s\"",
qUtf8Printable(m_IniFileName));
}
}
QString sResourceDataDirsFinal = GameGamebryo::readIniValue(
iniFilePath, "Archive", "sResourceDataDirsFinal", "STRINGS\\");
if (sResourceDataDirsFinal != "") {
dirty = true;
if (!MOBase::WriteRegistryValue("Archive", "sResourceDataDirsFinal", "",
iniFilePath)) {
qWarning("failed to override data directory in \"%s\"",
qUtf8Printable(m_IniFileName));
}
}
}
return dirty;
}
|