summaryrefslogtreecommitdiff
path: root/engine/event_system.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine/event_system.h')
-rw-r--r--engine/event_system.h104
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