mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-12 16:21:04 +02:00
177 lines
5.8 KiB
C++
177 lines
5.8 KiB
C++
/*
|
|
===========================================================================
|
|
|
|
Doom 3 GPL Source Code
|
|
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
|
|
|
This file is part of the Doom 3 GPL Source Code.
|
|
|
|
Quake 4 compatibility additions guarded with QUAKE4.
|
|
|
|
===========================================================================
|
|
*/
|
|
|
|
#ifndef __NETWORKSYSTEM_H__
|
|
#define __NETWORKSYSTEM_H__
|
|
|
|
/*
|
|
===============================================================================
|
|
|
|
Network System.
|
|
|
|
===============================================================================
|
|
*/
|
|
|
|
#ifdef QUAKE4
|
|
|
|
typedef struct scannedClient_s {
|
|
idStr nickname;
|
|
idStr clan;
|
|
short ping;
|
|
int rate;
|
|
} scannedClient_t;
|
|
|
|
typedef struct scannedServer_s {
|
|
netadr_t adr;
|
|
idDict serverInfo;
|
|
int ping;
|
|
int clients;
|
|
int OSMask;
|
|
|
|
// RAVEN BEGIN
|
|
// shouchard: server browser metadata
|
|
bool favorite;
|
|
bool dedicated;
|
|
bool performanceFiltered;
|
|
// RAVEN END
|
|
} scannedServer_t;
|
|
|
|
typedef enum sortColumn_e {
|
|
SC_NONE = -1,
|
|
SC_FAVORITE,
|
|
SC_LOCKED,
|
|
SC_DEDICATED,
|
|
SC_PB,
|
|
SC_NAME,
|
|
SC_PING,
|
|
SC_REPEATER,
|
|
SC_PLAYERS,
|
|
SC_GAMETYPE,
|
|
SC_MAP,
|
|
SC_ALL,
|
|
NUM_SC
|
|
} sortColumn_t;
|
|
|
|
typedef struct sortInfo_s {
|
|
sortColumn_t column;
|
|
idList<int>::cmp_t * compareFn;
|
|
idList<int>::filter_t * filterFn;
|
|
const char * description;
|
|
} sortInfo_t;
|
|
|
|
#endif // QUAKE4
|
|
|
|
class idNetworkSystem {
|
|
public:
|
|
virtual ~idNetworkSystem( void ) {}
|
|
|
|
#ifdef QUAKE4
|
|
virtual void Shutdown( void );
|
|
|
|
virtual void ServerSendReliableMessage( int clientNum, const idBitMsg &msg, bool inhibitRepeater = false );
|
|
virtual void RepeaterSendReliableMessage( int clientNum, const idBitMsg &msg, bool inhibitHeader = false, int including = -1 );
|
|
virtual void RepeaterSendReliableMessageExcluding( int excluding, const idBitMsg &msg, bool inhibitHeader = false, int clientNum = -1 );
|
|
virtual void ServerSendReliableMessageExcluding( int clientNum, const idBitMsg &msg, bool inhibitRepeater = false );
|
|
virtual int ServerGetClientPing( int clientNum );
|
|
virtual int ServerGetClientPrediction( int clientNum );
|
|
virtual int ServerGetClientTimeSinceLastPacket( int clientNum );
|
|
virtual int ServerGetClientTimeSinceLastInput( int clientNum );
|
|
virtual int ServerGetClientOutgoingRate( int clientNum );
|
|
virtual int ServerGetClientIncomingRate( int clientNum );
|
|
virtual float ServerGetClientIncomingPacketLoss( int clientNum );
|
|
virtual int ServerGetClientNum( int clientId );
|
|
virtual int ServerGetServerTime( void );
|
|
|
|
// returns the new clientNum or -1 if there weren't any free.
|
|
virtual int ServerConnectBot( void );
|
|
|
|
virtual int RepeaterGetClientNum( int clientId );
|
|
|
|
virtual void ClientSendReliableMessage( const idBitMsg &msg );
|
|
virtual int ClientGetPrediction( void );
|
|
virtual int ClientGetTimeSinceLastPacket( void );
|
|
virtual int ClientGetOutgoingRate( void );
|
|
virtual int ClientGetIncomingRate( void );
|
|
virtual float ClientGetIncomingPacketLoss( void );
|
|
|
|
// RAVEN BEGIN
|
|
// ddynerman: added utility functions. Returned strings may use static storage.
|
|
virtual const char * GetServerAddress( void );
|
|
virtual const char * GetClientAddress( int clientNum );
|
|
virtual void AddFriend( int clientNum );
|
|
virtual void RemoveFriend( int clientNum );
|
|
virtual void SetLoadingText( const char *loadingText );
|
|
virtual void AddLoadingIcon( const char *icon );
|
|
virtual const char * GetClientGUID( int clientNum );
|
|
// RAVEN END
|
|
|
|
virtual void GetTrafficStats( int &bytesSent, int &packetsSent, int &bytesReceived, int &packetsReceived ) const;
|
|
|
|
// server browser
|
|
virtual int GetNumScannedServers( void );
|
|
virtual const scannedServer_t *GetScannedServerInfo( int serverNum );
|
|
virtual const scannedClient_t *GetScannedServerClientInfo( int serverNum, int clientNum );
|
|
virtual void AddSortFunction( const sortInfo_t &sortInfo );
|
|
virtual bool RemoveSortFunction( const sortInfo_t &sortInfo );
|
|
virtual void UseSortFunction( const sortInfo_t &sortInfo, bool use = true );
|
|
virtual bool SortFunctionIsActive( const sortInfo_t &sortInfo );
|
|
|
|
// returns true if enabled
|
|
virtual bool HTTPEnable( bool enable );
|
|
|
|
virtual void ClientSetServerInfo( const idDict &serverSI );
|
|
virtual void RepeaterSetInfo( const idDict &info );
|
|
|
|
virtual const char * GetViewerGUID( int clientNum );
|
|
|
|
#else // !QUAKE4
|
|
|
|
virtual void ServerSendReliableMessage( int clientNum, const idBitMsg &msg );
|
|
virtual void ServerSendReliableMessageExcluding( int clientNum, const idBitMsg &msg );
|
|
virtual int ServerGetClientPing( int clientNum );
|
|
virtual int ServerGetClientPrediction( int clientNum );
|
|
virtual int ServerGetClientTimeSinceLastPacket( int clientNum );
|
|
virtual int ServerGetClientTimeSinceLastInput( int clientNum );
|
|
virtual int ServerGetClientOutgoingRate( int clientNum );
|
|
virtual int ServerGetClientIncomingRate( int clientNum );
|
|
virtual float ServerGetClientIncomingPacketLoss( int clientNum );
|
|
|
|
virtual void ClientSendReliableMessage( const idBitMsg &msg );
|
|
virtual int ClientGetPrediction( void );
|
|
virtual int ClientGetTimeSinceLastPacket( void );
|
|
virtual int ClientGetOutgoingRate( void );
|
|
virtual int ClientGetIncomingRate( void );
|
|
virtual float ClientGetIncomingPacketLoss( void );
|
|
|
|
virtual int AllocateClientSlotForBot(int maxPlayersOnServer);
|
|
virtual int ServerSetBotUserCommand(int clientNum, int frameNum, const usercmd_t& cmd);
|
|
virtual int ServerSetBotUserName(int clientNum, const char* playerName);
|
|
|
|
#endif // QUAKE4
|
|
|
|
#ifdef QUAKE4
|
|
private:
|
|
scannedServer_t scannedServer;
|
|
scannedClient_t scannedClient;
|
|
idList<sortInfo_t> sortFunctions;
|
|
idList<sortInfo_t> activeSortFunctions;
|
|
idDict clientServerInfo;
|
|
idDict repeaterInfo;
|
|
bool httpEnabled;
|
|
#endif
|
|
};
|
|
|
|
extern idNetworkSystem * networkSystem;
|
|
|
|
#endif /* !__NETWORKSYSTEM_H__ */
|