diff options
| author | oy <Tom_Adams@web.de> | 2012-01-09 00:49:20 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2012-01-09 00:49:20 +0100 |
| commit | 4fde2cf7f2353c045bcf483e7958d785dac3be64 (patch) | |
| tree | 68652fe6ce9710fc53ffc8175891bc1342341a18 | |
| parent | 7d2df3a38671f6e4b254576ced18d397828b8179 (diff) | |
| download | zcatch-4fde2cf7f2353c045bcf483e7958d785dac3be64.tar.gz zcatch-4fde2cf7f2353c045bcf483e7958d785dac3be64.zip | |
add tuning to demo. Closes #899
| -rw-r--r-- | src/engine/server.h | 1 | ||||
| -rw-r--r-- | src/engine/server/server.cpp | 5 | ||||
| -rw-r--r-- | src/engine/server/server.h | 1 | ||||
| -rw-r--r-- | src/game/client/gameclient.cpp | 9 | ||||
| -rw-r--r-- | src/game/server/gamecontext.cpp | 11 |
5 files changed, 27 insertions, 0 deletions
diff --git a/src/engine/server.h b/src/engine/server.h index 2e4a2f25..5036b654 100644 --- a/src/engine/server.h +++ b/src/engine/server.h @@ -65,6 +65,7 @@ public: virtual void Kick(int ClientID, const char *pReason) = 0; virtual void DemoRecorder_HandleAutoStart() = 0; + virtual bool DemoRecorder_IsRecording() = 0; }; class IGameServer : public IInterface diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index 6e63f747..c15cc96e 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1500,6 +1500,11 @@ void CServer::DemoRecorder_HandleAutoStart() } } +bool CServer::DemoRecorder_IsRecording() +{ + return m_DemoRecorder.IsRecording(); +} + void CServer::ConRecord(IConsole::IResult *pResult, void *pUser) { CServer* pServer = (CServer *)pUser; diff --git a/src/engine/server/server.h b/src/engine/server/server.h index e32f6733..696b472d 100644 --- a/src/engine/server/server.h +++ b/src/engine/server/server.h @@ -170,6 +170,7 @@ public: void Kick(int ClientID, const char *pReason); void DemoRecorder_HandleAutoStart(); + bool DemoRecorder_IsRecording(); //int Tick() int64 TickStartTime(int Tick); diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp index 6e94c830..467a55a0 100644 --- a/src/game/client/gameclient.cpp +++ b/src/game/client/gameclient.cpp @@ -893,6 +893,15 @@ void CGameClient::OnNewSnapshot() m_ServerMode = SERVERMODE_PUREMOD; } + // add tuning to demo + if(DemoRecorder()->IsRecording() && mem_comp(&StandardTuning, &m_Tuning, sizeof(CTuningParams)) != 0) + { + CMsgPacker Msg(NETMSGTYPE_SV_TUNEPARAMS); + int *pParams = (int *)&m_Tuning; + for(unsigned i = 0; i < sizeof(m_Tuning)/sizeof(int); i++) + Msg.AddInt(pParams[i]); + Client()->SendMsg(&Msg, MSGFLAG_RECORD|MSGFLAG_NOSEND); + } } void CGameClient::OnPredict() diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index 868ac593..fdd78f60 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -1511,6 +1511,17 @@ void CGameContext::OnShutdown() void CGameContext::OnSnap(int ClientID) { + // add tuning to demo + CTuningParams StandardTuning; + if(ClientID == -1 && Server()->DemoRecorder_IsRecording() && mem_comp(&StandardTuning, &m_Tuning, sizeof(CTuningParams)) != 0) + { + CMsgPacker Msg(NETMSGTYPE_SV_TUNEPARAMS); + int *pParams = (int *)&m_Tuning; + for(unsigned i = 0; i < sizeof(m_Tuning)/sizeof(int); i++) + Msg.AddInt(pParams[i]); + Server()->SendMsg(&Msg, MSGFLAG_RECORD|MSGFLAG_NOSEND, ClientID); + } + m_World.Snap(ClientID); m_pController->Snap(ClientID); m_Events.Snap(ClientID); |