diff options
Diffstat (limited to 'NorthstarDLL/clientvideooverrides.cpp')
-rw-r--r-- | NorthstarDLL/clientvideooverrides.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/NorthstarDLL/clientvideooverrides.cpp b/NorthstarDLL/clientvideooverrides.cpp new file mode 100644 index 00000000..0bc6bb06 --- /dev/null +++ b/NorthstarDLL/clientvideooverrides.cpp @@ -0,0 +1,36 @@ +#include "pch.h" +#include "modmanager.h" + +AUTOHOOK_INIT() + +AUTOHOOK_PROCADDRESS(BinkOpen, bink2w64.dll, BinkOpen, +void*,, (const char* path, uint32_t flags), +{ + std::string filename(fs::path(path).filename().string()); + spdlog::info("BinkOpen {}", filename); + + // figure out which mod is handling the bink + Mod* fileOwner = nullptr; + for (Mod& mod : g_pModManager->m_loadedMods) + { + if (!mod.Enabled) + continue; + + if (std::find(mod.BinkVideos.begin(), mod.BinkVideos.end(), filename) != mod.BinkVideos.end()) + fileOwner = &mod; + } + + if (fileOwner) + { + // create new path + fs::path binkPath(fileOwner->ModDirectory / "media" / filename); + return BinkOpen(binkPath.string().c_str(), flags); + } + else + return BinkOpen(path, flags); +}) + +ON_DLL_LOAD_CLIENT("client.dll", BinkVideo, [](HMODULE baseAddress) +{ + AUTOHOOK_DISPATCH() +})
\ No newline at end of file |