diff options
Diffstat (limited to 'engine/event_system.h')
| -rw-r--r-- | engine/event_system.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/engine/event_system.h b/engine/event_system.h new file mode 100644 index 0000000..0139cb4 --- /dev/null +++ b/engine/event_system.h @@ -0,0 +1,104 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// +//----------------------------------------------------------------------------- +// $Log: $ +// +// $NoKeywords: $ +//=============================================================================// +#if !defined( EVENT_SYSTEM_H ) +#define EVENT_SYSTEM_H +#ifdef _WIN32 +#pragma once +#endif + +#include "event_flags.h" +#include "common.h" +#include "enginesingleuserfilter.h" + + +class SendTable; +class ClientClass; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CEventInfo +{ +public: + enum + { + EVENT_INDEX_BITS = 8, + EVENT_DATA_LEN_BITS = 11, + MAX_EVENT_DATA = 192, // ( 1<<8 bits == 256, but only using 192 below ) + }; + + inline CEventInfo() + { + classID = 0; + fire_delay = 0.0f; + bits = 0; + flags = 0; + pSendTable = NULL; + pClientClass = NULL; + pData = NULL; + } + + ~CEventInfo() + { + if ( pData ) + { + delete pData; + } + } + + CEventInfo( const CEventInfo& src ) + { + classID = src.classID; + fire_delay = src.fire_delay; + bits = src.bits; + flags = src.flags; + pSendTable = src.pSendTable; + pClientClass = src.pClientClass; + filter.AddPlayersFromFilter( &src.filter ); + + if ( src.pData ) + { + int size = Bits2Bytes( src.bits ); + pData = new byte[size]; + Q_memcpy( pData, src.pData, size ); + } + else + { + pData = NULL; + } + + } + + // 0 implies not in use + short classID; + + // If non-zero, the delay time when the event should be fired ( fixed up on the client ) + float fire_delay; + + // send table pointer or NULL if send as full update + const SendTable *pSendTable; + const ClientClass *pClientClass; + + // Length of data bits + int bits; + // Raw event data + byte *pData; + // CLIENT ONLY Reliable or not, etc. + int flags; + + // clients that see that event + CEngineRecipientFilter filter; +}; + + +#endif // EVENT_SYSTEM_H |