diff options
Diffstat (limited to 'engine/GameEventManagerOld.cpp')
| -rw-r--r-- | engine/GameEventManagerOld.cpp | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/engine/GameEventManagerOld.cpp b/engine/GameEventManagerOld.cpp new file mode 100644 index 0000000..ab914d1 --- /dev/null +++ b/engine/GameEventManagerOld.cpp @@ -0,0 +1,144 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: wrapper for GameEvent manager legacy support +// +// $NoKeywords: $ +// +//=============================================================================// +// GameEventManager.cpp: implementation of the CGameEventManager class. +// +////////////////////////////////////////////////////////////////////// + +#include "GameEventManager.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +class CGameEventManagerOld : public IGameEventManager +{ + +public: // IGameEventManager wrapper + + int LoadEventsFromFile( const char * filename ) { return g_GameEventManager.LoadEventsFromFile( filename ); } + KeyValues *GetEvent(const char * name); + void Reset() { g_GameEventManager.Reset(); } + + bool AddListener( IGameEventListener * listener, const char * event, bool bIsServerSide ); + bool AddListener( IGameEventListener * listener, bool bIsServerSide ); + void RemoveListener(IGameEventListener * listener); + + bool FireEvent( KeyValues * event ); + bool FireEventClientOnly( KeyValues * event ); + bool FireEventServerOnly( KeyValues * event ); + + bool SerializeKeyValues( KeyValues *event, bf_write *buf, CGameEvent *eventtype = NULL ); + KeyValues * UnserializeKeyValue( bf_read *msg ); // create new KeyValues, must be deleted + +protected: + bool FireEventIntern( KeyValues * event, bool bServerSide, bool bClientSide ); + +}; + +static CGameEventManagerOld s_GameEventManagerOld; + +// Expose CVEngineServer to the engine. + +EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CGameEventManagerOld, IGameEventManager, INTERFACEVERSION_GAMEEVENTSMANAGER, s_GameEventManagerOld ); + + +bool CGameEventManagerOld::AddListener( IGameEventListener * listener, const char * event, bool bIsServerSide ) +{ + CGameEventDescriptor *descriptor = g_GameEventManager.GetEventDescriptor( event ); + + if ( !descriptor ) + return false; + + if ( bIsServerSide ) + { + return g_GameEventManager.AddListener( listener, descriptor, CGameEventManager::SERVERSIDE_OLD ); + } + else + { + return g_GameEventManager.AddListener( listener, descriptor, CGameEventManager::CLIENTSIDE_OLD ); + } +} + +bool CGameEventManagerOld::AddListener( IGameEventListener * listener, bool bIsServerSide ) +{ + if ( bIsServerSide ) + { + return g_GameEventManager.AddListenerAll( listener, CGameEventManager::SERVERSIDE_OLD ); + } + else + { + return g_GameEventManager.AddListenerAll( listener, CGameEventManager::CLIENTSIDE_OLD ); + } +} + +void CGameEventManagerOld::RemoveListener(IGameEventListener * listener) +{ + g_GameEventManager.RemoveListenerOld( listener ); +} + +KeyValues *CGameEventManagerOld::GetEvent(const char * name) +{ + CGameEventDescriptor *event = g_GameEventManager.GetEventDescriptor( name ); + + if ( !event ) + return NULL; + + return event->keys; +} + +bool CGameEventManagerOld::FireEvent( KeyValues * event ) +{ + return FireEventIntern( event, false, false ); +} + +bool CGameEventManagerOld::FireEventClientOnly( KeyValues * event ) +{ + return FireEventIntern( event, false, true ); +} + +bool CGameEventManagerOld::FireEventServerOnly( KeyValues * event ) +{ + return FireEventIntern( event, true, false ); +} + +bool CGameEventManagerOld::FireEventIntern( KeyValues *keys, bool bServerSideOnly, bool bClientSideOnly ) +{ + if ( !keys ) + return false; + + CGameEvent *event = (CGameEvent*) g_GameEventManager.CreateEvent( keys->GetName() ); + + if ( !event ) + return false; + + event->m_pDataKeys->deleteThis(); + event->m_pDataKeys = keys; + + if ( bClientSideOnly ) + { + return g_GameEventManager.FireEventClientSide( event ); + } + else + { + return g_GameEventManager.FireEvent( event, bServerSideOnly ); + } +} + + + +bool CGameEventManagerOld::SerializeKeyValues( KeyValues* event, bf_write* buf, CGameEvent* eventtype ) +{ + DevMsg("SerializeKeyValues:: not supported\n"); + return false; +} + +KeyValues *CGameEventManagerOld::UnserializeKeyValue( bf_read *buf) +{ + DevMsg("UnserializeKeyValue:: not supported\n"); + return NULL; +} + |