aboutsummaryrefslogtreecommitdiff
path: root/libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp')
-rw-r--r--libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp b/libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp
new file mode 100644
index 0000000..45df74f
--- /dev/null
+++ b/libs/game_bethesda/src/games/fallout4london/fo4londonbsainvalidation.cpp
@@ -0,0 +1,68 @@
+#include "fo4londonbsainvalidation.h"
+
+#include "dummybsa.h"
+#include "iplugingame.h"
+#include "iprofile.h"
+#include "registry.h"
+#include <imoinfo.h>
+#include <utility.h>
+
+#include "gamegamebryo.h"
+
+Fallout4LondonBSAInvalidation::Fallout4LondonBSAInvalidation(
+ MOBase::DataArchives* dataArchives, MOBase::IPluginGame const* game)
+ : GamebryoBSAInvalidation(dataArchives, "Fallout4Custom.ini", game)
+{
+ m_IniFileName = "Fallout4Custom.ini";
+ m_Game = game;
+}
+
+bool Fallout4LondonBSAInvalidation::isInvalidationBSA(const QString& bsaName)
+{
+ return false;
+}
+
+QString Fallout4LondonBSAInvalidation::invalidationBSAName() const
+{
+ return "";
+}
+
+unsigned long Fallout4LondonBSAInvalidation::bsaVersion() const
+{
+ return 0x68;
+}
+
+bool Fallout4LondonBSAInvalidation::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;
+}