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/modinfodialog.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'src/modinfodialog.cpp') diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index 1798e987..04ef003a 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -571,25 +571,30 @@ void ModInfoDialog::updateTabs(bool becauseOriginChanged) void ModInfoDialog::feedFiles(std::vector& interestedTabs) { - const auto rootPath = m_mod->absolutePath(); + const auto rootPath = + m_mod->absolutePath() + (m_core.managedGame()->modDataDirectory().isEmpty() + ? "" + : "/" + m_core.managedGame()->modDataDirectory()); if (rootPath.isEmpty()) { return; } - const fs::path fsPath(rootPath.toStdWString()); + if (fs::exists(rootPath.toStdWString())) { + const fs::path fsPath(rootPath.toStdWString()); - for (const auto& entry : fs::recursive_directory_iterator(fsPath)) { - if (!entry.is_regular_file()) { - // skip directories - continue; - } + for (const auto& entry : fs::recursive_directory_iterator(fsPath)) { + if (!entry.is_regular_file()) { + // skip directories + continue; + } - const auto filePath = QString::fromStdWString(entry.path().native()); + const auto filePath = QString::fromStdWString(entry.path().native()); - // for each tab - for (auto* tabInfo : interestedTabs) { - if (tabInfo->tab->feedFile(rootPath, filePath)) { - break; + // for each tab + for (auto* tabInfo : interestedTabs) { + if (tabInfo->tab->feedFile(rootPath, filePath)) { + break; + } } } } -- cgit v1.3.1