diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/globalstate.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/globalstate.cpp')
| -rw-r--r-- | mp/src/game/server/globalstate.cpp | 650 |
1 files changed, 325 insertions, 325 deletions
diff --git a/mp/src/game/server/globalstate.cpp b/mp/src/game/server/globalstate.cpp index 43390d90..7d50d5ce 100644 --- a/mp/src/game/server/globalstate.cpp +++ b/mp/src/game/server/globalstate.cpp @@ -1,325 +1,325 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-#include "cbase.h"
-#include "basetypes.h"
-#include "saverestore.h"
-#include "saverestore_utlvector.h"
-#include "saverestore_utlsymbol.h"
-#include "globalstate.h"
-#include "igamesystem.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-struct globalentity_t
-{
- DECLARE_SIMPLE_DATADESC();
-
- CUtlSymbol name;
- CUtlSymbol levelName;
- GLOBALESTATE state;
- int counter;
-};
-
-
-class CGlobalState : public CAutoGameSystem
-{
-public:
- CGlobalState( char const *name ) : CAutoGameSystem( name ), m_disableStateUpdates(false)
- {
- }
-
- // IGameSystem
- virtual void LevelShutdownPreEntity()
- {
- // don't allow state updates during shutdowns
- Assert( !m_disableStateUpdates );
- m_disableStateUpdates = true;
- }
-
- virtual void LevelShutdownPostEntity()
- {
- Assert( m_disableStateUpdates );
- m_disableStateUpdates = false;
- }
-
- void EnableStateUpdates( bool bEnable )
- {
- m_disableStateUpdates = !bEnable;
- }
-
- void SetState( int globalIndex, GLOBALESTATE state )
- {
- if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) )
- return;
- m_list[globalIndex].state = state;
- }
-
- GLOBALESTATE GetState( int globalIndex )
- {
- if ( !m_list.IsValidIndex(globalIndex) )
- return GLOBAL_OFF;
- return m_list[globalIndex].state;
- }
-
- void SetCounter( int globalIndex, int counter )
- {
- if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) )
- return;
- m_list[globalIndex].counter = counter;
- }
-
- int AddToCounter( int globalIndex, int delta )
- {
- if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) )
- return 0;
- return ( m_list[globalIndex].counter += delta );
- }
-
- int GetCounter( int globalIndex )
- {
- if ( !m_list.IsValidIndex(globalIndex) )
- return 0;
- return m_list[globalIndex].counter;
- }
-
- void SetMap( int globalIndex, string_t mapname )
- {
- if ( !m_list.IsValidIndex(globalIndex) )
- return;
- m_list[globalIndex].levelName = m_nameList.AddString( STRING(mapname) );
- }
-
- const char *GetMap( int globalIndex )
- {
- if ( !m_list.IsValidIndex(globalIndex) )
- return NULL;
- return m_nameList.String( m_list[globalIndex].levelName );
- }
-
- const char *GetName( int globalIndex )
- {
- if ( !m_list.IsValidIndex(globalIndex) )
- return NULL;
- return m_nameList.String( m_list[globalIndex].name );
- }
-
- int GetIndex( const char *pGlobalname )
- {
- CUtlSymbol symName = m_nameList.Find( pGlobalname );
-
- if ( symName.IsValid() )
- {
- for ( int i = m_list.Count() - 1; i >= 0; --i )
- {
- if ( m_list[i].name == symName )
- return i;
- }
- }
-
- return -1;
- }
-
- int AddEntity( const char *pGlobalname, const char *pMapName, GLOBALESTATE state )
- {
- globalentity_t entity;
- entity.name = m_nameList.AddString( pGlobalname );
- entity.levelName = m_nameList.AddString( pMapName );
- entity.state = state;
-
- int index = GetIndex( m_nameList.String( entity.name ) );
- if ( index >= 0 )
- return index;
- return m_list.AddToTail( entity );
- }
-
- int GetNumGlobals( void )
- {
- return m_list.Count();
- }
-
- void Reset( void );
- int Save( ISave &save );
- int Restore( IRestore &restore );
- DECLARE_SIMPLE_DATADESC();
-
-//#ifdef _DEBUG
- void DumpGlobals( void );
-//#endif
-
-public:
- CUtlSymbolTable m_nameList;
-private:
- bool m_disableStateUpdates;
- CUtlVector<globalentity_t> m_list;
-};
-
-static CGlobalState gGlobalState( "CGlobalState" );
-
-static CUtlSymbolDataOps g_GlobalSymbolDataOps( gGlobalState.m_nameList );
-
-
-void GlobalEntity_SetState( int globalIndex, GLOBALESTATE state )
-{
- gGlobalState.SetState( globalIndex, state );
-}
-
-void GlobalEntity_SetCounter( int globalIndex, int counter )
-{
- gGlobalState.SetCounter( globalIndex, counter );
-}
-
-int GlobalEntity_AddToCounter( int globalIndex, int delta )
-{
- return gGlobalState.AddToCounter( globalIndex, delta );
-}
-
-void GlobalEntity_EnableStateUpdates( bool bEnable )
-{
- gGlobalState.EnableStateUpdates( bEnable );
-}
-
-
-void GlobalEntity_SetMap( int globalIndex, string_t mapname )
-{
- gGlobalState.SetMap( globalIndex, mapname );
-}
-
-int GlobalEntity_Add( const char *pGlobalname, const char *pMapName, GLOBALESTATE state )
-{
- return gGlobalState.AddEntity( pGlobalname, pMapName, state );
-}
-
-int GlobalEntity_GetIndex( const char *pGlobalname )
-{
- return gGlobalState.GetIndex( pGlobalname );
-}
-
-GLOBALESTATE GlobalEntity_GetState( int globalIndex )
-{
- return gGlobalState.GetState( globalIndex );
-}
-
-int GlobalEntity_GetCounter( int globalIndex )
-{
- return gGlobalState.GetCounter( globalIndex );
-}
-
-const char *GlobalEntity_GetMap( int globalIndex )
-{
- return gGlobalState.GetMap( globalIndex );
-}
-
-const char *GlobalEntity_GetName( int globalIndex )
-{
- return gGlobalState.GetName( globalIndex );
-}
-
-int GlobalEntity_GetNumGlobals( void )
-{
- return gGlobalState.GetNumGlobals();
-}
-
-CON_COMMAND(dump_globals, "Dump all global entities/states")
-{
- if ( !UTIL_IsCommandIssuedByServerAdmin() )
- return;
-
- gGlobalState.DumpGlobals();
-}
-
-// This is available all the time now on impulse 104, remove later
-//#ifdef _DEBUG
-void CGlobalState::DumpGlobals( void )
-{
- static const char *estates[] = { "Off", "On", "Dead" };
-
- Msg( "-- Globals --\n" );
- for ( int i = 0; i < m_list.Count(); i++ )
- {
- Msg( "%s: %s (%s) = %d\n", m_nameList.String( m_list[i].name ), m_nameList.String( m_list[i].levelName ), estates[m_list[i].state], m_list[i].counter );
- }
-}
-//#endif
-
-
-// Global state Savedata
-BEGIN_SIMPLE_DATADESC( CGlobalState )
- DEFINE_UTLVECTOR( m_list, FIELD_EMBEDDED ),
- // DEFINE_FIELD( m_nameList, CUtlSymbolTable ),
- // DEFINE_FIELD( m_disableStateUpdates, FIELD_BOOLEAN ),
-END_DATADESC()
-
-BEGIN_SIMPLE_DATADESC( globalentity_t )
- DEFINE_CUSTOM_FIELD( name, &g_GlobalSymbolDataOps ),
- DEFINE_CUSTOM_FIELD( levelName, &g_GlobalSymbolDataOps ),
- DEFINE_FIELD( state, FIELD_INTEGER ),
- DEFINE_FIELD( counter, FIELD_INTEGER ),
-END_DATADESC()
-
-
-int CGlobalState::Save( ISave &save )
-{
- if ( !save.WriteFields( "GLOBAL", this, NULL, m_DataMap.dataDesc, m_DataMap.dataNumFields ) )
- return 0;
-
- return 1;
-}
-
-int CGlobalState::Restore( IRestore &restore )
-{
- Reset();
- if ( !restore.ReadFields( "GLOBAL", this, NULL, m_DataMap.dataDesc, m_DataMap.dataNumFields ) )
- return 0;
-
- return 1;
-}
-
-void CGlobalState::Reset( void )
-{
- m_list.Purge();
- m_nameList.RemoveAll();
-}
-
-
-void SaveGlobalState( CSaveRestoreData *pSaveData )
-{
- CSave saveHelper( pSaveData );
- gGlobalState.Save( saveHelper );
-}
-
-
-void RestoreGlobalState( CSaveRestoreData *pSaveData )
-{
- CRestore restoreHelper( pSaveData );
- gGlobalState.Restore( restoreHelper );
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: This gets called when a level is shut down
-//-----------------------------------------------------------------------------
-
-void ResetGlobalState( void )
-{
- gGlobalState.Reset();
-}
-
-
-void ShowServerGameTime()
-{
- Msg( "Server game time: %f\n", gpGlobals->curtime );
-}
-
-CON_COMMAND(server_game_time, "Gives the game time in seconds (server's curtime)")
-{
- if ( !UTIL_IsCommandIssuedByServerAdmin() )
- return;
-
- ShowServerGameTime();
-}
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#include "cbase.h" +#include "basetypes.h" +#include "saverestore.h" +#include "saverestore_utlvector.h" +#include "saverestore_utlsymbol.h" +#include "globalstate.h" +#include "igamesystem.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +struct globalentity_t +{ + DECLARE_SIMPLE_DATADESC(); + + CUtlSymbol name; + CUtlSymbol levelName; + GLOBALESTATE state; + int counter; +}; + + +class CGlobalState : public CAutoGameSystem +{ +public: + CGlobalState( char const *name ) : CAutoGameSystem( name ), m_disableStateUpdates(false) + { + } + + // IGameSystem + virtual void LevelShutdownPreEntity() + { + // don't allow state updates during shutdowns + Assert( !m_disableStateUpdates ); + m_disableStateUpdates = true; + } + + virtual void LevelShutdownPostEntity() + { + Assert( m_disableStateUpdates ); + m_disableStateUpdates = false; + } + + void EnableStateUpdates( bool bEnable ) + { + m_disableStateUpdates = !bEnable; + } + + void SetState( int globalIndex, GLOBALESTATE state ) + { + if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) ) + return; + m_list[globalIndex].state = state; + } + + GLOBALESTATE GetState( int globalIndex ) + { + if ( !m_list.IsValidIndex(globalIndex) ) + return GLOBAL_OFF; + return m_list[globalIndex].state; + } + + void SetCounter( int globalIndex, int counter ) + { + if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) ) + return; + m_list[globalIndex].counter = counter; + } + + int AddToCounter( int globalIndex, int delta ) + { + if ( m_disableStateUpdates || !m_list.IsValidIndex(globalIndex) ) + return 0; + return ( m_list[globalIndex].counter += delta ); + } + + int GetCounter( int globalIndex ) + { + if ( !m_list.IsValidIndex(globalIndex) ) + return 0; + return m_list[globalIndex].counter; + } + + void SetMap( int globalIndex, string_t mapname ) + { + if ( !m_list.IsValidIndex(globalIndex) ) + return; + m_list[globalIndex].levelName = m_nameList.AddString( STRING(mapname) ); + } + + const char *GetMap( int globalIndex ) + { + if ( !m_list.IsValidIndex(globalIndex) ) + return NULL; + return m_nameList.String( m_list[globalIndex].levelName ); + } + + const char *GetName( int globalIndex ) + { + if ( !m_list.IsValidIndex(globalIndex) ) + return NULL; + return m_nameList.String( m_list[globalIndex].name ); + } + + int GetIndex( const char *pGlobalname ) + { + CUtlSymbol symName = m_nameList.Find( pGlobalname ); + + if ( symName.IsValid() ) + { + for ( int i = m_list.Count() - 1; i >= 0; --i ) + { + if ( m_list[i].name == symName ) + return i; + } + } + + return -1; + } + + int AddEntity( const char *pGlobalname, const char *pMapName, GLOBALESTATE state ) + { + globalentity_t entity; + entity.name = m_nameList.AddString( pGlobalname ); + entity.levelName = m_nameList.AddString( pMapName ); + entity.state = state; + + int index = GetIndex( m_nameList.String( entity.name ) ); + if ( index >= 0 ) + return index; + return m_list.AddToTail( entity ); + } + + int GetNumGlobals( void ) + { + return m_list.Count(); + } + + void Reset( void ); + int Save( ISave &save ); + int Restore( IRestore &restore ); + DECLARE_SIMPLE_DATADESC(); + +//#ifdef _DEBUG + void DumpGlobals( void ); +//#endif + +public: + CUtlSymbolTable m_nameList; +private: + bool m_disableStateUpdates; + CUtlVector<globalentity_t> m_list; +}; + +static CGlobalState gGlobalState( "CGlobalState" ); + +static CUtlSymbolDataOps g_GlobalSymbolDataOps( gGlobalState.m_nameList ); + + +void GlobalEntity_SetState( int globalIndex, GLOBALESTATE state ) +{ + gGlobalState.SetState( globalIndex, state ); +} + +void GlobalEntity_SetCounter( int globalIndex, int counter ) +{ + gGlobalState.SetCounter( globalIndex, counter ); +} + +int GlobalEntity_AddToCounter( int globalIndex, int delta ) +{ + return gGlobalState.AddToCounter( globalIndex, delta ); +} + +void GlobalEntity_EnableStateUpdates( bool bEnable ) +{ + gGlobalState.EnableStateUpdates( bEnable ); +} + + +void GlobalEntity_SetMap( int globalIndex, string_t mapname ) +{ + gGlobalState.SetMap( globalIndex, mapname ); +} + +int GlobalEntity_Add( const char *pGlobalname, const char *pMapName, GLOBALESTATE state ) +{ + return gGlobalState.AddEntity( pGlobalname, pMapName, state ); +} + +int GlobalEntity_GetIndex( const char *pGlobalname ) +{ + return gGlobalState.GetIndex( pGlobalname ); +} + +GLOBALESTATE GlobalEntity_GetState( int globalIndex ) +{ + return gGlobalState.GetState( globalIndex ); +} + +int GlobalEntity_GetCounter( int globalIndex ) +{ + return gGlobalState.GetCounter( globalIndex ); +} + +const char *GlobalEntity_GetMap( int globalIndex ) +{ + return gGlobalState.GetMap( globalIndex ); +} + +const char *GlobalEntity_GetName( int globalIndex ) +{ + return gGlobalState.GetName( globalIndex ); +} + +int GlobalEntity_GetNumGlobals( void ) +{ + return gGlobalState.GetNumGlobals(); +} + +CON_COMMAND(dump_globals, "Dump all global entities/states") +{ + if ( !UTIL_IsCommandIssuedByServerAdmin() ) + return; + + gGlobalState.DumpGlobals(); +} + +// This is available all the time now on impulse 104, remove later +//#ifdef _DEBUG +void CGlobalState::DumpGlobals( void ) +{ + static const char *estates[] = { "Off", "On", "Dead" }; + + Msg( "-- Globals --\n" ); + for ( int i = 0; i < m_list.Count(); i++ ) + { + Msg( "%s: %s (%s) = %d\n", m_nameList.String( m_list[i].name ), m_nameList.String( m_list[i].levelName ), estates[m_list[i].state], m_list[i].counter ); + } +} +//#endif + + +// Global state Savedata +BEGIN_SIMPLE_DATADESC( CGlobalState ) + DEFINE_UTLVECTOR( m_list, FIELD_EMBEDDED ), + // DEFINE_FIELD( m_nameList, CUtlSymbolTable ), + // DEFINE_FIELD( m_disableStateUpdates, FIELD_BOOLEAN ), +END_DATADESC() + +BEGIN_SIMPLE_DATADESC( globalentity_t ) + DEFINE_CUSTOM_FIELD( name, &g_GlobalSymbolDataOps ), + DEFINE_CUSTOM_FIELD( levelName, &g_GlobalSymbolDataOps ), + DEFINE_FIELD( state, FIELD_INTEGER ), + DEFINE_FIELD( counter, FIELD_INTEGER ), +END_DATADESC() + + +int CGlobalState::Save( ISave &save ) +{ + if ( !save.WriteFields( "GLOBAL", this, NULL, m_DataMap.dataDesc, m_DataMap.dataNumFields ) ) + return 0; + + return 1; +} + +int CGlobalState::Restore( IRestore &restore ) +{ + Reset(); + if ( !restore.ReadFields( "GLOBAL", this, NULL, m_DataMap.dataDesc, m_DataMap.dataNumFields ) ) + return 0; + + return 1; +} + +void CGlobalState::Reset( void ) +{ + m_list.Purge(); + m_nameList.RemoveAll(); +} + + +void SaveGlobalState( CSaveRestoreData *pSaveData ) +{ + CSave saveHelper( pSaveData ); + gGlobalState.Save( saveHelper ); +} + + +void RestoreGlobalState( CSaveRestoreData *pSaveData ) +{ + CRestore restoreHelper( pSaveData ); + gGlobalState.Restore( restoreHelper ); +} + + +//----------------------------------------------------------------------------- +// Purpose: This gets called when a level is shut down +//----------------------------------------------------------------------------- + +void ResetGlobalState( void ) +{ + gGlobalState.Reset(); +} + + +void ShowServerGameTime() +{ + Msg( "Server game time: %f\n", gpGlobals->curtime ); +} + +CON_COMMAND(server_game_time, "Gives the game time in seconds (server's curtime)") +{ + if ( !UTIL_IsCommandIssuedByServerAdmin() ) + return; + + ShowServerGameTime(); +} |