diff options
Diffstat (limited to 'common/ClientNetMessage.h')
| -rw-r--r-- | common/ClientNetMessage.h | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/common/ClientNetMessage.h b/common/ClientNetMessage.h new file mode 100644 index 0000000..1d20076 --- /dev/null +++ b/common/ClientNetMessage.h @@ -0,0 +1,138 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef CLIENTNETMESSAGE_H +#define CLIENTNETMESSAGE_H +#ifdef _WIN32 +#pragma once +#pragma warning(disable : 4100) // unreferenced formal parameter +#pragma warning(disable : 4514) // unreferenced inline function has been removed +#endif + +#include "inetmessage.h" +#include "protocol.h" +#include "checksum_crc.h" +#include "tier0/dbg.h" + +class bf_read; +class bf_write; + +#define DECLARE_CLIENTNETMESSAGE( msgtype ) \ + public: \ + int ReadFromBuffer( bf_read * buffer ); \ + int WriteToBuffer( bf_write * buffer ); \ + void Clear(); \ + const char *ToString(); \ + static int GetType() { return msgtype; }; \ + static const char *GetName() { return #msgtype; }; + +class CNetMessage : public INetMessage +{ +public: + CNetMessage() { m_bReliable = 0; m_bOwnData = false; }; + virtual ~CNetMessage() {}; + + void SetReliable( bool state = true) {m_bReliable = state;}; + bool IsReliable() { return m_bReliable; }; + bool IsConnectionless() { return false;}; + + virtual const char *ToString() { return "Unknown CNetMessage"; }; + +public: + + bool m_bReliable; // true if message should be send reliable + bool m_bOwnData; // true if message object uses dynamic allocated memory +}; + +class CLC_SendFile : public CNetMessage +{ + DECLARE_CLIENTNETMESSAGE( clc_sendfile ); + + CLC_SendFile(CRC32_t fileCRC) + { + m_bReliable = true; + m_bOwnData = false; + m_FileCRC = fileCRC; + } + +public: + CRC32_t m_FileCRC; // CRC of file to send +}; + +class CLC_Move : public CNetMessage +{ + DECLARE_CLIENTNETMESSAGE( clc_move ); + + CLC_Move( int numBackup, int numNew, int length, unsigned char * data) + { + m_bReliable = true; + m_bOwnData = false; + m_nNumBackupCommands = numBackup; + m_nNumNewCommands = numNew; + m_nLength = length; // in bits + m_Data = data; + } + +public: + int m_nNumBackupCommands; + int m_nNumNewCommands; + int m_nLength; + unsigned char *m_Data; +}; + + + +class CLC_StringCmd : public CNetMessage +{ + DECLARE_CLIENTNETMESSAGE( clc_stringcmd ); + + CLC_StringCmd(const char *command) + { + Assert( command ); + m_szClientCommand = (char*)command; + m_bReliable = true; + m_bOwnData = false; + }; + +public: + + char *m_szClientCommand; + +}; + +class CLC_Delta : public CNetMessage +{ + DECLARE_CLIENTNETMESSAGE( clc_delta ); + + CLC_Delta( int deltaSequeenceNr ); + +public: + int m_nSequenceNumber; +}; + +class CLC_VoiceData : public CNetMessage +{ + DECLARE_CLIENTNETMESSAGE( clc_voicedata ); + + CLC_VoiceData( unsigned char *data, int length ) + { + Assert( data ); + m_Data = data; + m_nLength = length; + m_bReliable = false; + m_bOwnData = false; + }; + +public: + + int m_nLength; + unsigned char *m_Data; +}; + + + + +#endif // CLIENTNETMESSAGE_H |