From 35d08fb33e174b826eefe972b91dda89a5f24dc7 Mon Sep 17 00:00:00 2001 From: Jeremy Rimpo Date: Sat, 26 Apr 2025 00:37:19 -0500 Subject: [PATCH] More file map updates --- games/game_oblivion_remaster.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/games/game_oblivion_remaster.py b/games/game_oblivion_remaster.py index 574b59f..21c2400 100644 --- a/games/game_oblivion_remaster.py +++ b/games/game_oblivion_remaster.py @@ -1,6 +1,5 @@ import os.path from functools import cmp_to_key -from pathlib import Path from typing import Dict, Sequence import PyQt6.QtCore @@ -8,7 +7,7 @@ import mobase from PyQt6.QtCore import QByteArray, QDir, QFileInfo, QFile, QDateTime, QCoreApplication, QStandardPaths, \ QStringEncoder, QStringConverter, qCritical, qDebug -from ..basic_features import BasicLocalSavegames, BasicGameSaveGameInfo, BasicModDataChecker, GlobPatterns +from ..basic_features import BasicLocalSavegames, BasicGameSaveGameInfo from ..basic_features.utils import is_directory from ..basic_game import BasicGame @@ -60,6 +59,9 @@ class OblivionRemasteredModDataChecker(mobase.ModDataChecker): elif sub_name.endswith(tuple(extensions)): status = mobase.ModDataChecker.FIXABLE else: + if name == 'Paks': + status = mobase.ModDataChecker.FIXABLE + break new_status = self.dataLooksValid(entry) if new_status != mobase.ModDataChecker.INVALID: status = new_status @@ -106,13 +108,28 @@ class OblivionRemasteredModDataChecker(mobase.ModDataChecker): for entry in next_dir: name = entry.name().casefold() if is_directory(entry): + if name == '~mods': + main_filetree.merge(entry) + entry.detach() + continue self.parse_directory(main_filetree, entry) else: if name.endswith(tuple(extensions)): main_filetree.merge(next_dir) - next_dir.detach() + parent = next_dir.parent() if next_dir.parent().parent() is not None else next_dir + while parent.parent().parent() is not None: + parent = parent.parent() + parent.detach() elif name.endswith('.pak'): - main_filetree.move(next_dir, '/') + if entry.parent().name().casefold() == 'Paks': + main_filetree.merge(entry.parent()) + parent = entry.parent() if entry.parent().parent() is not None else entry + while parent.parent().parent() is not None: + parent = parent.parent() + parent.detach() + return main_filetree + else: + main_filetree.move(next_dir, '/') return main_filetree