diff options
author | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2021-10-25 00:45:40 +0100 |
---|---|---|
committer | BobTheBob <32057864+BobTheBob9@users.noreply.github.com> | 2021-10-25 00:45:40 +0100 |
commit | 7e1f1d8270dbdfbe2374e9da664cea2e00dfd465 (patch) | |
tree | 3d5fe484721c570d12bee33aa55b1b91f7b7df40 /enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966 | |
parent | 48acde84bd58c82eaa3a9838757dfcd05ab4ebf5 (diff) | |
download | NorthstarLauncher-7e1f1d8270dbdfbe2374e9da664cea2e00dfd465.tar.gz NorthstarLauncher-7e1f1d8270dbdfbe2374e9da664cea2e00dfd465.zip |
fixing some dedi crashes
Diffstat (limited to 'enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966')
-rw-r--r-- | enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp b/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp new file mode 100644 index 00000000..7d347097 --- /dev/null +++ b/enc_temp_folder/9532ad42f9bf304d9fb7388cf83b5966/dllmain.cpp @@ -0,0 +1,106 @@ +#include "pch.h" +#include "hooks.h" +#include "main.h" +#include "squirrel.h" +#include "tier0.h" +#include "dedicated.h" +#include "dedicatedmaterialsystem.h" +#include "sourceconsole.h" +#include "logging.h" +#include "concommand.h" +#include "modmanager.h" +#include "filesystem.h" +#include "serverauthentication.h" +#include "scriptmodmenu.h" +#include "scriptserverbrowser.h" +#include "keyvalues.h" +#include "masterserver.h" +#include "gameutils.h" +#include "chatcommand.h" +#include "modlocalisation.h" +#include "playlist.h" +#include "securitypatches.h" +#include "miscserverscript.h" + +bool initialised = false; + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + + if (!initialised) + InitialiseNorthstar(); + initialised = true; + + return TRUE; +} + +void WaitForDebugger(HMODULE baseAddress) +{ + // earlier waitfordebugger call than is in vanilla, just so we can debug stuff a little easier + if (CommandLine()->CheckParm("-waitfordebugger")) + { + while (!IsDebuggerPresent()) + Sleep(100); + } +} + +// in the future this will be called from launcher instead of dllmain +void InitialiseNorthstar() +{ + InitialiseLogging(); + + // apply initial hooks + InstallInitialHooks(); + InitialiseInterfaceCreationHooks(); + + AddDllLoadCallback("engine.dll", WaitForDebugger); + AddDllLoadCallback("engine.dll", InitialiseEngineGameUtilFunctions); + AddDllLoadCallback("server.dll", InitialiseServerGameUtilFunctions); + AddDllLoadCallback("engine.dll", InitialiseEngineSpewFuncHooks); + + // dedi patches + { + AddDllLoadCallback("engine.dll", InitialiseDedicated); + AddDllLoadCallback("launcher.dll", InitialiseDedicatedOrigin); + AddDllLoadCallback("materialsystem_dx11.dll", InitialiseDedicatedMaterialSystem); + AddDllLoadCallback("engine.dll", InitialiseDedicatedRtechGame); + } + + AddDllLoadCallback("engine.dll", InitialiseConVars); + AddDllLoadCallback("engine.dll", InitialiseConCommands); + + // client-exclusive patches + { + AddDllLoadCallback("engine.dll", InitialiseClientEngineSecurityPatches); + AddDllLoadCallback("client.dll", InitialiseClientSquirrel); + AddDllLoadCallback("client.dll", InitialiseSourceConsole); + AddDllLoadCallback("engine.dll", InitialiseChatCommands); + AddDllLoadCallback("client.dll", InitialiseScriptModMenu); + AddDllLoadCallback("client.dll", InitialiseScriptServerBrowser); + AddDllLoadCallback("localize.dll", InitialiseModLocalisation); + } + + AddDllLoadCallback("server.dll", InitialiseServerSquirrel); + AddDllLoadCallback("engine.dll", InitialiseServerAuthentication); + AddDllLoadCallback("engine.dll", InitialiseSharedMasterServer); + AddDllLoadCallback("server.dll", InitialiseMiscServerScriptCommand); + + AddDllLoadCallback("engine.dll", InitialisePlaylistHooks); + + AddDllLoadCallback("filesystem_stdio.dll", InitialiseFilesystem); + AddDllLoadCallback("engine.dll", InitialiseKeyValues); + + // mod manager after everything else + AddDllLoadCallback("engine.dll", InitialiseModManager); +}
\ No newline at end of file |