cstrike15_src/game/client/c_keyvalue_saver.h
2025-06-04 03:22:50 +02:00

74 lines
1.8 KiB
C++

//========= Copyright © 1996-2008, Valve Corporation, All rights reserved. ============//
//
// Purpose: Client handler for instruction players how to play
//
//=============================================================================//
#ifndef _C_KEYVALUE_SAVER_H_
#define _C_KEYVALUE_SAVER_H_
#include "GameEventListener.h"
#include "keyvalues.h"
typedef void (*KeyValueBuilder)( KeyValues* );
struct KeyValueSaverData
{
char szFileName[ MAX_PATH ];
bool bDirtySaveData;
KeyValues *pKeyValues;
KeyValueBuilder funcKeyValueBuilder;
};
class C_KeyValueSaver : public CAutoGameSystemPerFrame, public CGameEventListener
{
public:
C_KeyValueSaver() : CAutoGameSystemPerFrame( "C_KeyValueSaver" )
{
m_nSplitScreenSlot = -1;
}
void SetSlot( int nSlot ) { m_nSplitScreenSlot = nSlot; }
// Methods of IGameSystem
virtual bool Init( void );
virtual void Shutdown( void );
virtual void Update( float frametime );
// Methods of CGameEventListener
virtual void FireGameEvent( IGameEvent *event );
bool InitKeyValues( const char *pchFileName, KeyValueBuilder funcKeyValueBuilder );
bool WriteDirtyKeyValues( const char *pchFileName, bool bForceWrite = false );
KeyValues * GetKeyValues( const char *pchFileName, bool bForceReread = false );
void MarkKeyValuesDirty( const char *pchFileName );
private:
bool ReadKeyValues( KeyValueSaverData *pKeyValueData );
bool WriteDirtyKeyValues( KeyValueSaverData *pKeyValueData, bool bForceWrite = false );
void WriteAllDirtyKeyValues( void );
KeyValueSaverData * FindKeyValueData( const char *pchFileName );
private:
CUtlVector< KeyValueSaverData > m_KeyValueData;
int m_nSplitScreenSlot;
};
C_KeyValueSaver &KeyValueSaver();
// Merged from L4D but waiting on other code to be merged before this can compile
void GameInstructor_Init();
void GameInstructor_Shutdown();
#endif // _C_KEYVALUE_SAVER_H_