etqw-sdk/source/game/Game_network.h

101 lines
2.8 KiB
C
Raw Normal View History

2008-05-29 00:00:00 +00:00
// Copyright (C) 2007 Id Software, Inc.
//
#ifndef __GAME_NETWORK_H__
#define __GAME_NETWORK_H__
#define ASYNC_BUFFER_SECURITY
const int ASYNC_MAGIC_NUMBER = 12345678;
#include "network/SnapshotState.h"
class sdReliableMessageClientInfoBase {
protected:
sdReliableMessageClientInfoBase() { ; }
public:
bool SendToRepeaterClients( void ) const { return sendToRepeaterClients; }
bool SendToClients( void ) const { return sendToClients; }
bool SendToAll( void ) const { return clientNum == -1; }
bool DontSendToRelays( void ) const { return dontSendToRelays; }
int GetClientNum( void ) const { return clientNum; }
protected:
bool sendToClients;
bool sendToRepeaterClients;
bool dontSendToRelays;
int clientNum;
};
class sdReliableMessageClientInfo : public sdReliableMessageClientInfoBase {
public:
sdReliableMessageClientInfo( int clientNum ) {
this->clientNum = clientNum;
this->sendToClients = true;
this->sendToRepeaterClients = false;
this->dontSendToRelays = false;
}
};
class sdReliableMessageClientInfoRepeater : public sdReliableMessageClientInfoBase {
public:
sdReliableMessageClientInfoRepeater( int clientNum ) {
this->clientNum = clientNum;
this->sendToClients = false;
this->sendToRepeaterClients = true;
this->dontSendToRelays = false;
}
};
class sdReliableMessageClientInfoAll : public sdReliableMessageClientInfoBase {
public:
sdReliableMessageClientInfoAll( void ) {
this->clientNum = -1;
this->sendToClients = true;
this->sendToRepeaterClients = true;
this->dontSendToRelays = false;
}
};
class sdReliableMessageClientInfoRepeaterLocal : public sdReliableMessageClientInfoBase {
public:
sdReliableMessageClientInfoRepeaterLocal( void ) {
this->clientNum = -1;
this->sendToClients = false;
this->sendToRepeaterClients = true;
this->dontSendToRelays = true;
}
};
class sdReliableServerMessage : public idBitMsg {
public:
sdReliableServerMessage( gameReliableServerMessage_t _type ) : type( _type ) {
InitWrite( buffer, sizeof( buffer ) );
WriteBits( type, idMath::BitsForInteger( GAME_RELIABLE_SMESSAGE_NUM_MESSAGES ) );
}
void Send( const sdReliableMessageClientInfoBase& info ) const;
protected:
byte buffer[ MAX_GAME_MESSAGE_SIZE ];
gameReliableServerMessage_t type;
};
class sdReliableClientMessage : public idBitMsg {
public:
sdReliableClientMessage( gameReliableClientMessage_t type ) {
InitWrite( buffer, sizeof( buffer ) );
WriteBits( type, idMath::BitsForInteger( GAME_RELIABLE_CMESSAGE_NUM_MESSAGES ) );
}
void Send( void ) const {
networkSystem->ClientSendReliableMessage( *this );
}
protected:
byte buffer[ MAX_GAME_MESSAGE_SIZE ];
};
#endif // __GAME_NETWORK_H__