aboutsummaryrefslogtreecommitdiff
path: root/libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp')
-rw-r--r--libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp b/libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp
new file mode 100644
index 0000000..30a74ee
--- /dev/null
+++ b/libs/game_bethesda/src/games/oblivion/oblivionmoddatachecker.cpp
@@ -0,0 +1,30 @@
+#include "oblivionmoddatachecker.h"
+
+MOBase::ModDataChecker::CheckReturn OblivionModDataChecker::dataLooksValid(
+ std::shared_ptr<const MOBase::IFileTree> fileTree) const
+{
+ // Check with Gamebryo stuff:
+ auto check = GamebryoModDataChecker::dataLooksValid(fileTree);
+ if (check == CheckReturn::VALID) {
+ return check;
+ }
+
+ // Check for OBSE_ files:
+ for (auto const& entry : *fileTree) {
+ if (entry->isDir() || !entry->name().startsWith("OBSE", Qt::CaseInsensitive)) {
+ return CheckReturn::INVALID;
+ }
+ }
+
+ return CheckReturn::FIXABLE;
+}
+
+std::shared_ptr<MOBase::IFileTree>
+OblivionModDataChecker::fix(std::shared_ptr<MOBase::IFileTree> fileTree) const
+{
+ // If we arrive here, it means all files starts with OBSE.
+ auto data = fileTree->createOrphanTree();
+ auto obse = data->addDirectory("OBSE/Plugins");
+ obse->merge(fileTree);
+ return data;
+}