From b987fe53cbe6facd9194d48eeedb70de8b263b0b Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Thu, 28 Jan 2021 11:24:08 +0100 Subject: [PATCH] Moved the IsEnabled check from computing effective file list to the hook. --- Penumbra/Mods/ModManager.cs | 3 --- Penumbra/ResourceLoader.cs | 39 ++++++++++++++++++++----------------- Penumbra/UI/TabSettings.cs | 1 - 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Penumbra/Mods/ModManager.cs b/Penumbra/Mods/ModManager.cs index 164b715a..9b2013be 100644 --- a/Penumbra/Mods/ModManager.cs +++ b/Penumbra/Mods/ModManager.cs @@ -108,9 +108,6 @@ namespace Penumbra.Mods { ResolvedFiles.Clear(); SwappedFiles.Clear(); - - if (!_plugin.Configuration.IsEnabled) - return; var registeredFiles = new Dictionary< string, string >(); diff --git a/Penumbra/ResourceLoader.cs b/Penumbra/ResourceLoader.cs index 86cf2b44..5ec263d5 100644 --- a/Penumbra/ResourceLoader.cs +++ b/Penumbra/ResourceLoader.cs @@ -127,30 +127,33 @@ namespace Penumbra if( LogAllFiles ) { PluginLog.Log( "[GetResourceHandler] {0}", gameFsPath ); - } + } + + if (Plugin.Configuration.IsEnabled) + { + var replacementPath = Plugin.ModManager.ResolveSwappedOrReplacementFilePath( gameFsPath ); - var replacementPath = Plugin.ModManager.ResolveSwappedOrReplacementFilePath( gameFsPath ); + // path must be < 260 because statically defined array length :( + if( replacementPath == null || replacementPath.Length >= 260 ) + { + return CallOriginalHandler( isSync, pFileManager, pCategoryId, pResourceType, pResourceHash, pPath, pUnknown, isUnknown ); + } - // path must be < 260 because statically defined array length :( - if( replacementPath == null || replacementPath.Length >= 260 ) - { - return CallOriginalHandler( isSync, pFileManager, pCategoryId, pResourceType, pResourceHash, pPath, pUnknown, isUnknown ); - } + var cleanPath = replacementPath.Replace( '\\', '/' ); + var path = Encoding.ASCII.GetBytes( cleanPath ); - var cleanPath = replacementPath.Replace( '\\', '/' ); - var path = Encoding.ASCII.GetBytes( cleanPath ); + var bPath = stackalloc byte[path.Length + 1]; + Marshal.Copy( path, 0, new IntPtr( bPath ), path.Length ); + pPath = ( char* )bPath; - var bPath = stackalloc byte[path.Length + 1]; - Marshal.Copy( path, 0, new IntPtr( bPath ), path.Length ); - pPath = ( char* )bPath; - - Crc32.Init(); - Crc32.Update( path ); - *pResourceHash = Crc32.Checksum; + Crc32.Init(); + Crc32.Update( path ); + *pResourceHash = Crc32.Checksum; #if DEBUG - PluginLog.Log( "[GetResourceHandler] resolved {GamePath} to {NewPath}", gameFsPath, replacementPath ); -#endif + PluginLog.Log( "[GetResourceHandler] resolved {GamePath} to {NewPath}", gameFsPath, replacementPath ); +#endif + } return CallOriginalHandler( isSync, pFileManager, pCategoryId, pResourceType, pResourceHash, pPath, pUnknown, isUnknown ); } diff --git a/Penumbra/UI/TabSettings.cs b/Penumbra/UI/TabSettings.cs index 3e1372df..2ebab4d4 100644 --- a/Penumbra/UI/TabSettings.cs +++ b/Penumbra/UI/TabSettings.cs @@ -63,7 +63,6 @@ namespace Penumbra.UI if( ImGui.Checkbox( LabelEnabled, ref enabled ) ) { _config.IsEnabled = enabled; - _base.ReloadMods(); _configChanged = true; } }