Files
DoomRTX/neo/engine/framework/async/NetworkSystem.h
T
2026-05-09 22:10:40 -07:00

173 lines
5.5 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 );
#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__ */