summaryrefslogtreecommitdiff
path: root/src/modinfooverwrite.cpp
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2025-05-23 14:08:01 -0500
committerGitHub <noreply@github.com>2025-05-23 14:08:01 -0500
commit3a8ea3cccee06397e90305e1e39a305f8b7c3cb3 (patch)
tree6c16bf9825bf3f1613a8536d4702f24667fc4c80 /src/modinfooverwrite.cpp
parent5d766e94a7a3b3fa861d57d3ad6ae619d98dd5d8 (diff)
Oblivion Remastered Meta PR (#2241)
* Allow for mod directory maps - Set main data files based on game - Mapped mod directories to VFS - Update overwrite setup * Skip if mod contains no 'data' dir * More mod directory compatibility fixes * Workaround for Obl:Rem save location - SLocalSavePath does nothing yet MO2 wants to use it to override the default save location - This only applies to BGS games anyway, we should move this logic * First pass for overwrite mod directory support * More overwrite move / delete restrictions * Fix issue with moving directories that are not required * Formatting pass * More modDataDirectory updates * Formatting --------- Co-authored-by: Mikaƫl Capelle <capelle.mikael@gmail.com>
Diffstat (limited to 'src/modinfooverwrite.cpp')
-rw-r--r--src/modinfooverwrite.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/modinfooverwrite.cpp b/src/modinfooverwrite.cpp
index 9d0ed5f9..c65cbace 100644
--- a/src/modinfooverwrite.cpp
+++ b/src/modinfooverwrite.cpp
@@ -3,6 +3,7 @@
#include "settings.h"
#include "shared/appconfig.h"
+#include "organizercore.h"
#include <QApplication>
#include <QDirIterator>
@@ -14,10 +15,24 @@ bool ModInfoOverwrite::isEmpty() const
QDirIterator iter(absolutePath(), QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs);
if (!iter.hasNext())
return true;
- iter.next();
- if ((iter.fileName() == "meta.ini") && !iter.hasNext())
- return true;
- return false;
+ while (iter.hasNext()) {
+ iter.next();
+ if (iter.fileInfo().isDir() &&
+ !m_Core.managedGame()->getModMappings().keys().contains(iter.fileName(),
+ Qt::CaseInsensitive))
+ return false;
+ if (iter.fileInfo().isDir() &&
+ m_Core.managedGame()->getModMappings().keys().contains(iter.fileName(),
+ Qt::CaseInsensitive)) {
+ if (QDir(iter.filePath()).count() > 2) {
+ return false;
+ }
+ }
+ if (iter.fileInfo().isFile() && iter.fileName() != "meta.ini")
+ return false;
+ }
+
+ return true;
}
QString ModInfoOverwrite::absolutePath() const