mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
1
This commit is contained in:
99
replay/shared_cvars.cpp
Normal file
99
replay/shared_cvars.cpp
Normal file
@@ -0,0 +1,99 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
//=======================================================================================//
|
||||
|
||||
#include "replaysystem.h"
|
||||
#include "cl_replaymanager.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void OnReplayEnableChanged( IConVar *pVar, const char *pOldValue, float flOldValue );
|
||||
void OnReplayRecordingChanged( IConVar *pVar, const char *pOldValue, float flOldValue );
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
// Replicated
|
||||
ConVar replay_enable( "replay_enable", "0", FCVAR_REPLICATED | FCVAR_DONTRECORD, "Enable Replay recording on server", true, 0, true, 1, OnReplayEnableChanged );
|
||||
ConVar replay_recording( "replay_recording", "0", FCVAR_REPLICATED | FCVAR_DONTRECORD | FCVAR_HIDDEN, "", true, 0, true, 1, OnReplayRecordingChanged );
|
||||
|
||||
ConVar replay_flushinterval( "replay_flushinterval", "15", FCVAR_DONTRECORD | FCVAR_ARCHIVE, "Replay system will flush to disk a maximum of every replay_flushinterval seconds.", true, 1.0f, true, 60.0f );
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
//
|
||||
// A little class to keep OnReplayEnableChanged() from recursing unnecessarily
|
||||
//
|
||||
class CSimpleCounter
|
||||
{
|
||||
public:
|
||||
CSimpleCounter() { ++m_nCounter; }
|
||||
~CSimpleCounter() { --m_nCounter; }
|
||||
|
||||
int GetCounter() const { return m_nCounter; }
|
||||
|
||||
private:
|
||||
static int m_nCounter;
|
||||
};
|
||||
|
||||
int CSimpleCounter::m_nCounter = 0;
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
void OnReplayEnableChanged( IConVar *pVar, const char *pOldValue, float flOldValue )
|
||||
{
|
||||
// We want to avoid recursing when we SetValue() on replay_enable (ie 'var')
|
||||
CSimpleCounter counter;
|
||||
if ( counter.GetCounter() != 1 )
|
||||
return;
|
||||
|
||||
if ( !g_pEngine->IsDedicated() )
|
||||
return;
|
||||
|
||||
ConVarRef var( pVar );
|
||||
if ( (int)flOldValue == var.GetInt() )
|
||||
return;
|
||||
|
||||
/*
|
||||
ConVarRef tv_enable( "tv_enable" );
|
||||
if ( var.GetBool() && tv_enable.IsValid() && tv_enable.GetBool() )
|
||||
{
|
||||
var.SetValue( 0 );
|
||||
Warning( "Error: SourceTV is enabled. Please disable SourceTV if you wish to enable Replay.\n" );
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
const int nNewValue = var.GetInt();
|
||||
if ( nNewValue )
|
||||
{
|
||||
g_pServerReplayContext->FlagForConVarSanityCheck();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Reset value - note that the recursion depth counter will keep this from being dumb.
|
||||
var.SetValue( 0 );
|
||||
|
||||
// End recording, which will clear the value again.
|
||||
g_pReplay->SV_EndRecordingSession( false );
|
||||
}
|
||||
|
||||
g_pEngine->RecalculateTags();
|
||||
}
|
||||
|
||||
void OnReplayRecordingChanged( IConVar *pVar, const char *pOldValue, float flOldValue )
|
||||
{
|
||||
if ( g_pEngine->IsDedicated() )
|
||||
return;
|
||||
|
||||
#if !defined( DEDICATED )
|
||||
// If we're playing back a replay, we don't care
|
||||
if ( g_pEngineClient->IsPlayingReplayDemo() )
|
||||
return;
|
||||
|
||||
// Client-only
|
||||
CL_GetReplayManager()->OnReplayRecordingCvarChanged();
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user