diff options
author | Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> | 2022-07-08 23:21:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-09 00:21:13 +0200 |
commit | 151d678453f3e321fcccf2512e6e2f53436f1469 (patch) | |
tree | 4b1102826be6f73835224c3d06c04f4476af7b6a /NorthstarDedicatedTest/rpakfilesystem.cpp | |
parent | 9f8190486e04c66483dc8cd0ca9fd92fc732789a (diff) | |
download | NorthstarLauncher-151d678453f3e321fcccf2512e6e2f53436f1469.tar.gz NorthstarLauncher-151d678453f3e321fcccf2512e6e2f53436f1469.zip |
Add Postload support for rpaks (#217)v1.9.1-rc1
* fixed custom rpaks being loaded more than once
* formatting
* better things, although LoadPakSyncHook is annoying
* formatting
* removing unnecessary comments and stuff (whoops)
* Moving to use PakLoadManager
* formatting
* postload things
* formatting
* trailing space smh
Diffstat (limited to 'NorthstarDedicatedTest/rpakfilesystem.cpp')
-rw-r--r-- | NorthstarDedicatedTest/rpakfilesystem.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/rpakfilesystem.cpp b/NorthstarDedicatedTest/rpakfilesystem.cpp index b3105996..1a4736a9 100644 --- a/NorthstarDedicatedTest/rpakfilesystem.cpp +++ b/NorthstarDedicatedTest/rpakfilesystem.cpp @@ -108,6 +108,23 @@ void LoadPreloadPaks() } } +void LoadPostloadPaks(char** map) +{ + // note, loading from ./ is necessary otherwise paks will load from gamedir/r2/paks + for (Mod& mod : g_ModManager->m_loadedMods) + { + if (!mod.Enabled) + continue; + + // need to get a relative path of mod to mod folder + fs::path modPakPath("./" / mod.ModDirectory / "paks"); + + for (ModRpakEntry& pak : mod.Rpaks) + if (pak.m_sLoadAfterPak == *map) + g_PakLoadManager->LoadPakAsync((modPakPath / pak.m_sPakName).string().c_str(), false); + } +} + void LoadCustomMapPaks(char** pakName, bool* bNeedToFreePakName) { // whether the vanilla game has this rpak @@ -212,6 +229,8 @@ int LoadPakAsyncHook(char* path, void* unknownSingleton, int flags, void* callba // add the hash to the map g_PakLoadManager->AddLoadedPak(ret, hash); + LoadPostloadPaks(&path); + if (bNeedToFreePakName) delete[] path; |