aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDedicatedTest')
-rw-r--r--NorthstarDedicatedTest/dedicated.cpp9
-rw-r--r--NorthstarDedicatedTest/gameutils.cpp2
-rw-r--r--NorthstarDedicatedTest/gameutils.h25
3 files changed, 24 insertions, 12 deletions
diff --git a/NorthstarDedicatedTest/dedicated.cpp b/NorthstarDedicatedTest/dedicated.cpp
index 3dca5032..bcf2acc8 100644
--- a/NorthstarDedicatedTest/dedicated.cpp
+++ b/NorthstarDedicatedTest/dedicated.cpp
@@ -41,14 +41,10 @@ void RunServer(CDedicatedExports* dedicated)
CEngine__FrameType CEngine__Frame = (CEngine__FrameType)((char*)engine + 0x1C8650);
CHostState__InitType CHostState__Init = (CHostState__InitType)((char*)engine + 0x16E110);
- // call once to init
- CEngine__Frame(g_pEngine);
-
// init hoststate, if we don't do this, we get a crash later on
CHostState__Init(g_pHostState);
- // set up engine and host states to allow us to enter CHostState::FrameUpdate, with the state HS_NEW_GAME
- g_pEngine->m_nNextDllState = EngineState_t::DLL_ACTIVE;
+ // set host state to allow us to enter CHostState::FrameUpdate, with the state HS_NEW_GAME
g_pHostState->m_iNextState = HostState_t::HS_NEW_GAME;
strncpy(g_pHostState->m_levelName, CommandLine()->ParmValue("+map", "mp_lobby"), sizeof(g_pHostState->m_levelName)); // set map to load into
@@ -56,8 +52,7 @@ void RunServer(CDedicatedExports* dedicated)
{
CEngine__Frame(g_pEngine);
- //engineApiStartSimulation(nullptr, true);
- Sys_Printf(dedicated, (char*)"engine->Frame()");
+ spdlog::info("CEngine::Frame() on map {} took {}ms", g_pHostState->m_levelName, g_pEngine->m_flFrameTime);
Sleep(50);
}
}
diff --git a/NorthstarDedicatedTest/gameutils.cpp b/NorthstarDedicatedTest/gameutils.cpp
index 1f7870b0..e63c8786 100644
--- a/NorthstarDedicatedTest/gameutils.cpp
+++ b/NorthstarDedicatedTest/gameutils.cpp
@@ -31,7 +31,7 @@ void InitialiseEngineGameUtilFunctions(HMODULE baseAddress)
Cbuf_Execute = (Cbuf_ExecuteType)((char*)baseAddress + 0x1204B0);
g_pHostState = (CHostState*)((char*)baseAddress + 0x7CF180);
- g_pEngine = (CEngine*)((char*)baseAddress + 0x7D70C8);
+ g_pEngine = *(CEngine**)((char*)baseAddress + 0x7D70C8);
Cvar_hostport = (ConVar*)((char*)baseAddress + 0x13FA6070);
diff --git a/NorthstarDedicatedTest/gameutils.h b/NorthstarDedicatedTest/gameutils.h
index cdf9ec3b..786c5e99 100644
--- a/NorthstarDedicatedTest/gameutils.h
+++ b/NorthstarDedicatedTest/gameutils.h
@@ -109,15 +109,32 @@ public:
float m_angLocation[3];
char m_levelName[32];
-
- // not reversed past this point, struct seems weird
- // pretty decent chance m_levelname is bigger, given it was 256 long in normal source
+ char m_mapGroupName[32];
+ char m_landmarkName[32];
+ char m_saveName[32];
+ float m_flShortFrameTime; // run a few one-tick frames to avoid large timesteps while loading assets
+
+ bool m_activeGame;
+ bool m_bRememberLocation;
+ bool m_bBackgroundLevel;
+ bool m_bWaitingForConnection;
+ bool m_bLetToolsOverrideLoadGameEnts; // During a load game, this tells Foundry to override ents that are selected in Hammer.
+ bool m_bSplitScreenConnect;
+ bool m_bGameHasShutDownAndFlushedMemory; // This is false once we load a map into memory, and set to true once the map is unloaded and all memory flushed
+ bool m_bWorkshopMapDownloadPending;
};
extern CHostState* g_pHostState;
// cengine stuff
+enum EngineQuitState
+{
+ QUIT_NOTQUITTING = 0,
+ QUIT_TODESKTOP,
+ QUIT_RESTART
+};
+
enum EngineState_t
{
DLL_INACTIVE = 0, // no dll
@@ -132,7 +149,7 @@ struct CEngine
public:
void* vtable;
- int m_nQuitting;
+ EngineQuitState m_nQuitting;
EngineState_t m_nDllState;
EngineState_t m_nNextDllState;
double m_flCurrentTime;