170 lines
5.5 KiB
C++
170 lines
5.5 KiB
C++
//========= Copyright (c) 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================//
|
|
|
|
#ifndef ICLIENT_H
|
|
#define ICLIENT_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "inetmsghandler.h"
|
|
#include "tier0/platform.h"
|
|
#include "userid.h"
|
|
#include "tier1/utlvector.h"
|
|
|
|
class IServer;
|
|
class INetMessage;
|
|
struct NetMessageCvar_t;
|
|
class CMsg_CVars;
|
|
|
|
enum CrossPlayPlatform_t
|
|
{
|
|
CROSSPLAYPLATFORM_UNKNOWN = 0,
|
|
CROSSPLAYPLATFORM_PC,
|
|
CROSSPLAYPLATFORM_X360,
|
|
CROSSPLAYPLATFORM_PS3,
|
|
|
|
CROSSPLAYPLATFORM_LAST = CROSSPLAYPLATFORM_PS3,
|
|
};
|
|
|
|
inline bool IsCrossPlayPlatformAConsole( CrossPlayPlatform_t platform )
|
|
{
|
|
return (platform == CROSSPLAYPLATFORM_X360) || (platform == CROSSPLAYPLATFORM_PS3);
|
|
}
|
|
|
|
//provide the compiled code's platform for convenience
|
|
#if defined( _GAMECONSOLE )
|
|
# if defined( PLATFORM_X360 )
|
|
# define CROSSPLAYPLATFORM_THISPLATFORM CROSSPLAYPLATFORM_X360
|
|
# elif defined( PLATFORM_PS3 )
|
|
# define CROSSPLAYPLATFORM_THISPLATFORM CROSSPLAYPLATFORM_PS3
|
|
# else
|
|
#pragma message( "Unknown console, please update this platform definition" )
|
|
# define CROSSPLAYPLATFORM_THISPLATFORM CROSSPLAYPLATFORM_UNKNOWN
|
|
# endif
|
|
#else
|
|
# define CROSSPLAYPLATFORM_THISPLATFORM CROSSPLAYPLATFORM_PC
|
|
#endif
|
|
|
|
struct HltvReplayParams_t
|
|
{
|
|
HltvReplayParams_t()
|
|
{
|
|
m_nPrimaryTargetEntIndex = 0;
|
|
m_flPlaybackSpeed = 1.0f;
|
|
m_flDelay = 10.0f;
|
|
m_flStopAt = 0.0f;
|
|
m_flSlowdownBeginAt = 0;
|
|
m_flSlowdownEndAt = 0;
|
|
m_flSlowdownRate = 1.0f;
|
|
m_bAbortCurrentReplay = false;
|
|
}
|
|
int m_nPrimaryTargetEntIndex;
|
|
float m_flDelay;
|
|
float m_flStopAt;
|
|
float m_flPlaybackSpeed;
|
|
float m_flSlowdownBeginAt;
|
|
float m_flSlowdownEndAt;
|
|
float m_flSlowdownRate;
|
|
bool m_bAbortCurrentReplay; // even if replay is in progress, restart it - this may cause a stutter on the client, so use with care
|
|
};
|
|
|
|
abstract_class IClient : public INetChannelHandler
|
|
{
|
|
public:
|
|
virtual ~IClient() {}
|
|
|
|
// connect client
|
|
virtual void Connect( const char * szName, int nUserID, INetChannel *pNetChannel, bool bFakePlayer, CrossPlayPlatform_t clientPlatform, const CMsg_CVars *pVecCvars = NULL ) = 0;
|
|
|
|
// set the client in a pending state waiting for a new game
|
|
virtual void Inactivate( void ) = 0;
|
|
|
|
// Reconnect without dropiing the netchannel
|
|
virtual void Reconnect( void ) = 0; // froce reconnect
|
|
|
|
// disconnects a client with a given reason
|
|
virtual void Disconnect( const char *reason ) = 0;
|
|
|
|
virtual bool ChangeSplitscreenUser( int nSplitScreenUserSlot ) = 0;
|
|
|
|
virtual int GetPlayerSlot() const = 0; // returns client slot (usually entity number-1)
|
|
virtual int GetUserID() const = 0; // unique ID on this server
|
|
virtual const USERID_t GetNetworkID() const = 0; // network wide ID
|
|
virtual const char *GetClientName() const = 0; // returns client name
|
|
virtual INetChannel *GetNetChannel() = 0; // returns client netchannel
|
|
virtual IServer *GetServer() = 0; // returns the object server the client belongs to
|
|
virtual const char *GetUserSetting(const char *cvar) const = 0; // returns a clients FCVAR_USERINFO setting
|
|
virtual const char *GetNetworkIDString() const = 0; // returns a human readable representation of the network id
|
|
|
|
// set/get client data rate in bytes/second
|
|
virtual void SetRate( int nRate, bool bForce ) = 0;
|
|
virtual int GetRate( void ) const = 0;
|
|
|
|
// set/get updates/second rate
|
|
virtual void SetUpdateRate( float fUpdateRate, bool bForce ) = 0;
|
|
virtual float GetUpdateRate( void ) const = 0;
|
|
|
|
// clear complete object & free all memory
|
|
virtual void Clear( void ) = 0;
|
|
|
|
// returns the highest world tick number acknowledge by client
|
|
virtual int GetMaxAckTickCount() const = 0;
|
|
|
|
// execute a client command
|
|
virtual bool ExecuteStringCommand( const char *s ) = 0;
|
|
// send client a network message
|
|
virtual bool SendNetMsg(INetMessage &msg, bool bForceReliable = false, bool bVoice = false ) = 0;
|
|
// send client a text message
|
|
virtual void ClientPrintf (const char *fmt, ...) = 0;
|
|
|
|
// client has established network channels, nothing else
|
|
virtual bool IsConnected( void ) const = 0;
|
|
// client is downloading signon data
|
|
virtual bool IsSpawned( void ) const = 0;
|
|
// client active is ingame, receiving snapshots
|
|
virtual bool IsActive( void ) const = 0;
|
|
// returns true, if client is not a real player
|
|
virtual bool IsFakeClient( void ) const = 0;
|
|
// returns true, if client is a HLTV proxy
|
|
virtual bool IsHLTV( void ) const = 0;
|
|
#if defined( REPLAY_ENABLED )
|
|
// returns true, if client is a Replay proxy
|
|
virtual bool IsReplay( void ) const = 0;
|
|
#endif
|
|
// returns true, if client hears this player
|
|
virtual bool IsHearingClient(int index) const = 0;
|
|
// returns true, if client hears this player by proximity
|
|
virtual bool IsProximityHearingClient(int index) const = 0;
|
|
|
|
virtual void SetMaxRoutablePayloadSize( int nMaxRoutablePayloadSize ) = 0;
|
|
|
|
// returns true, if client is a split screen user
|
|
virtual bool IsSplitScreenUser( void ) const = 0;
|
|
|
|
virtual bool CheckConnect( void ) = 0;
|
|
|
|
virtual bool IsLowViolenceClient( void ) const = 0;
|
|
|
|
virtual IClient *GetSplitScreenOwner() = 0;
|
|
|
|
// get the number of players on this client's machine
|
|
virtual int GetNumPlayers() = 0;
|
|
|
|
virtual bool IsHumanPlayer() const = 0;
|
|
|
|
virtual CrossPlayPlatform_t GetClientPlatform() const = 0;
|
|
|
|
virtual bool StartHltvReplay( const HltvReplayParams_t ¶ms ) = 0;
|
|
virtual void StopHltvReplay() = 0;
|
|
virtual int GetHltvReplayDelay() = 0;
|
|
virtual const char * GetHltvReplayStatus()const { return ""; }
|
|
virtual bool CanStartHltvReplay() = 0;
|
|
virtual void ResetReplayRequestTime() = 0;
|
|
};
|
|
|
|
#endif // ICLIENT_H
|