From 3a8ea3cccee06397e90305e1e39a305f8b7c3cb3 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Fri, 23 May 2025 14:08:01 -0500 Subject: Oblivion Remastered Meta PR (#2241) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- src/modinfooverwrite.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/modinfooverwrite.cpp') 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 #include @@ -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 -- cgit v1.3.1