mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-20 12:36:05 +08:00
Update from SDK 2013
This commit is contained in:

committed by
Nicholas Hastings

parent
6d5c024820
commit
94b660e16e
@ -1,183 +1,232 @@
|
||||
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Expose things from GameInterface.cpp. Mostly the engine interfaces.
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef GAMEINTERFACE_H
|
||||
#define GAMEINTERFACE_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "mapentities.h"
|
||||
|
||||
extern INetworkStringTable *g_pStringTableInfoPanel;
|
||||
|
||||
// Player / Client related functions
|
||||
// Most of this is implemented in gameinterface.cpp, but some of it is per-mod in files like cs_gameinterface.cpp, etc.
|
||||
class CServerGameClients : public IServerGameClients
|
||||
{
|
||||
public:
|
||||
virtual bool ClientConnect( edict_t *pEntity, char const* pszName, char const* pszAddress, char *reject, int maxrejectlen );
|
||||
virtual void ClientActive( edict_t *pEntity, bool bLoadGame );
|
||||
virtual void ClientDisconnect( edict_t *pEntity );
|
||||
virtual void ClientPutInServer( edict_t *pEntity, const char *playername );
|
||||
virtual void ClientCommand( edict_t *pEntity, const CCommand &args );
|
||||
virtual void ClientSettingsChanged( edict_t *pEntity );
|
||||
virtual void ClientSetupVisibility( edict_t *pViewEntity, edict_t *pClient, unsigned char *pvs, int pvssize );
|
||||
virtual float ProcessUsercmds( edict_t *player, bf_read *buf, int numcmds, int totalcmds,
|
||||
int dropped_packets, bool ignore, bool paused );
|
||||
// Player is running a command
|
||||
virtual void PostClientMessagesSent( void );
|
||||
virtual void SetCommandClient( int index );
|
||||
virtual CPlayerState *GetPlayerState( edict_t *player );
|
||||
virtual void ClientEarPosition( edict_t *pEntity, Vector *pEarOrigin );
|
||||
|
||||
virtual void GetPlayerLimits( int& minplayers, int& maxplayers, int &defaultMaxPlayers ) const;
|
||||
|
||||
// returns number of delay ticks if player is in Replay mode (0 = no delay)
|
||||
virtual int GetReplayDelay( edict_t *player, int& entity );
|
||||
// Anything this game .dll wants to add to the bug reporter text (e.g., the entity/model under the picker crosshair)
|
||||
// can be added here
|
||||
virtual void GetBugReportInfo( char *buf, int buflen );
|
||||
virtual void NetworkIDValidated( const char *pszUserName, const char *pszNetworkID );
|
||||
};
|
||||
|
||||
|
||||
class CServerGameDLL : public IServerGameDLL
|
||||
{
|
||||
public:
|
||||
virtual bool DLLInit(CreateInterfaceFn engineFactory, CreateInterfaceFn physicsFactory,
|
||||
CreateInterfaceFn fileSystemFactory, CGlobalVars *pGlobals);
|
||||
virtual void DLLShutdown( void );
|
||||
// Get the simulation interval (must be compiled with identical values into both client and game .dll for MOD!!!)
|
||||
virtual float GetTickInterval( void ) const;
|
||||
virtual bool GameInit( void );
|
||||
virtual void GameShutdown( void );
|
||||
virtual bool LevelInit( const char *pMapName, char const *pMapEntities, char const *pOldLevel, char const *pLandmarkName, bool loadGame, bool background );
|
||||
virtual void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax );
|
||||
virtual void LevelShutdown( void );
|
||||
virtual void GameFrame( bool simulating ); // could be called multiple times before sending data to clients
|
||||
virtual void PreClientUpdate( bool simulating ); // called after all GameFrame() calls, before sending data to clients
|
||||
|
||||
virtual ServerClass* GetAllServerClasses( void );
|
||||
virtual const char *GetGameDescription( void );
|
||||
virtual void CreateNetworkStringTables( void );
|
||||
|
||||
// Save/restore system hooks
|
||||
virtual CSaveRestoreData *SaveInit( int size );
|
||||
virtual void SaveWriteFields( CSaveRestoreData *, char const* , void *, datamap_t *, typedescription_t *, int );
|
||||
virtual void SaveReadFields( CSaveRestoreData *, char const* , void *, datamap_t *, typedescription_t *, int );
|
||||
virtual void SaveGlobalState( CSaveRestoreData * );
|
||||
virtual void RestoreGlobalState( CSaveRestoreData * );
|
||||
virtual int CreateEntityTransitionList( CSaveRestoreData *, int );
|
||||
virtual void BuildAdjacentMapList( void );
|
||||
|
||||
virtual void PreSave( CSaveRestoreData * );
|
||||
virtual void Save( CSaveRestoreData * );
|
||||
virtual void GetSaveComment( char *comment, int maxlength, float flMinutes, float flSeconds, bool bNoTime = false );
|
||||
#ifdef _XBOX
|
||||
virtual void GetTitleName( const char *pMapName, char* pTitleBuff, int titleBuffSize );
|
||||
#endif
|
||||
virtual void WriteSaveHeaders( CSaveRestoreData * );
|
||||
|
||||
virtual void ReadRestoreHeaders( CSaveRestoreData * );
|
||||
virtual void Restore( CSaveRestoreData *, bool );
|
||||
virtual bool IsRestoring();
|
||||
|
||||
// Retrieve info needed for parsing the specified user message
|
||||
virtual bool GetUserMessageInfo( int msg_type, char *name, int maxnamelength, int& size );
|
||||
|
||||
virtual CStandardSendProxies* GetStandardSendProxies();
|
||||
|
||||
virtual void PostInit();
|
||||
virtual void Think( bool finalTick );
|
||||
|
||||
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue );
|
||||
|
||||
virtual void PreSaveGameLoaded( char const *pSaveName, bool bInGame );
|
||||
|
||||
// Returns true if the game DLL wants the server not to be made public.
|
||||
// Used by commentary system to hide multiplayer commentary servers from the master.
|
||||
virtual bool ShouldHideServer( void );
|
||||
|
||||
virtual void InvalidateMdlCache();
|
||||
|
||||
float m_fAutoSaveDangerousTime;
|
||||
float m_fAutoSaveDangerousMinHealthToCommit;
|
||||
|
||||
private:
|
||||
|
||||
// This can just be a wrapper on MapEntity_ParseAllEntities, but CS does some tricks in here
|
||||
// with the entity list.
|
||||
void LevelInit_ParseAllEntities( const char *pMapEntities );
|
||||
void LoadMessageOfTheDay();
|
||||
};
|
||||
|
||||
|
||||
// Normally, when the engine calls ClientPutInServer, it calls a global function in the game DLL
|
||||
// by the same name. Use this to override the function that it calls. This is used for bots.
|
||||
typedef CBasePlayer* (*ClientPutInServerOverrideFn)( edict_t *pEdict, const char *playername );
|
||||
|
||||
void ClientPutInServerOverride( ClientPutInServerOverrideFn fn );
|
||||
|
||||
// -------------------------------------------------------------------------------------------- //
|
||||
// Entity list management stuff.
|
||||
// -------------------------------------------------------------------------------------------- //
|
||||
// These are created for map entities in order as the map entities are spawned.
|
||||
class CMapEntityRef
|
||||
{
|
||||
public:
|
||||
int m_iEdict; // Which edict slot this entity got. -1 if CreateEntityByName failed.
|
||||
int m_iSerialNumber; // The edict serial number. TODO used anywhere ?
|
||||
};
|
||||
|
||||
extern CUtlLinkedList<CMapEntityRef, unsigned short> g_MapEntityRefs;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMapLoadEntityFilter : public IMapEntityFilter
|
||||
{
|
||||
public:
|
||||
virtual bool ShouldCreateEntity( const char *pClassname )
|
||||
{
|
||||
// During map load, create all the entities.
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual CBaseEntity* CreateNextEntity( const char *pClassname )
|
||||
{
|
||||
CBaseEntity *pRet = CreateEntityByName( pClassname );
|
||||
|
||||
CMapEntityRef ref;
|
||||
ref.m_iEdict = -1;
|
||||
ref.m_iSerialNumber = -1;
|
||||
|
||||
if ( pRet )
|
||||
{
|
||||
ref.m_iEdict = pRet->entindex();
|
||||
if ( pRet->edict() )
|
||||
ref.m_iSerialNumber = pRet->edict()->m_NetworkSerialNumber;
|
||||
}
|
||||
|
||||
g_MapEntityRefs.AddToTail( ref );
|
||||
return pRet;
|
||||
}
|
||||
};
|
||||
|
||||
bool IsEngineThreaded();
|
||||
|
||||
class CServerGameTags : public IServerGameTags
|
||||
{
|
||||
public:
|
||||
virtual void GetTaggedConVarList( KeyValues *pCvarTagList );
|
||||
|
||||
};
|
||||
EXPOSE_SINGLE_INTERFACE( CServerGameTags, IServerGameTags, INTERFACEVERSION_SERVERGAMETAGS );
|
||||
|
||||
#endif // GAMEINTERFACE_H
|
||||
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Expose things from GameInterface.cpp. Mostly the engine interfaces.
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef GAMEINTERFACE_H
|
||||
#define GAMEINTERFACE_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "mapentities.h"
|
||||
|
||||
class IReplayFactory;
|
||||
|
||||
extern INetworkStringTable *g_pStringTableInfoPanel;
|
||||
extern INetworkStringTable *g_pStringTableServerMapCycle;
|
||||
|
||||
#ifdef TF_DLL
|
||||
extern INetworkStringTable *g_pStringTableServerPopFiles;
|
||||
#endif
|
||||
|
||||
// Player / Client related functions
|
||||
// Most of this is implemented in gameinterface.cpp, but some of it is per-mod in files like cs_gameinterface.cpp, etc.
|
||||
class CServerGameClients : public IServerGameClients
|
||||
{
|
||||
public:
|
||||
virtual bool ClientConnect( edict_t *pEntity, char const* pszName, char const* pszAddress, char *reject, int maxrejectlen ) OVERRIDE;
|
||||
virtual void ClientActive( edict_t *pEntity, bool bLoadGame ) OVERRIDE;
|
||||
virtual void ClientDisconnect( edict_t *pEntity ) OVERRIDE;
|
||||
virtual void ClientPutInServer( edict_t *pEntity, const char *playername ) OVERRIDE;
|
||||
virtual void ClientCommand( edict_t *pEntity, const CCommand &args ) OVERRIDE;
|
||||
virtual void ClientSettingsChanged( edict_t *pEntity ) OVERRIDE;
|
||||
virtual void ClientSetupVisibility( edict_t *pViewEntity, edict_t *pClient, unsigned char *pvs, int pvssize ) OVERRIDE;
|
||||
virtual float ProcessUsercmds( edict_t *player, bf_read *buf, int numcmds, int totalcmds,
|
||||
int dropped_packets, bool ignore, bool paused ) OVERRIDE;
|
||||
// Player is running a command
|
||||
virtual void PostClientMessagesSent_DEPRECIATED( void ) OVERRIDE;
|
||||
virtual void SetCommandClient( int index ) OVERRIDE;
|
||||
virtual CPlayerState *GetPlayerState( edict_t *player ) OVERRIDE;
|
||||
virtual void ClientEarPosition( edict_t *pEntity, Vector *pEarOrigin ) OVERRIDE;
|
||||
|
||||
virtual void GetPlayerLimits( int& minplayers, int& maxplayers, int &defaultMaxPlayers ) const OVERRIDE;
|
||||
|
||||
// returns number of delay ticks if player is in Replay mode (0 = no delay)
|
||||
virtual int GetReplayDelay( edict_t *player, int& entity ) OVERRIDE;
|
||||
// Anything this game .dll wants to add to the bug reporter text (e.g., the entity/model under the picker crosshair)
|
||||
// can be added here
|
||||
virtual void GetBugReportInfo( char *buf, int buflen ) OVERRIDE;
|
||||
virtual void NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ) OVERRIDE;
|
||||
|
||||
// The client has submitted a keyvalues command
|
||||
virtual void ClientCommandKeyValues( edict_t *pEntity, KeyValues *pKeyValues ) OVERRIDE;
|
||||
|
||||
// Notify that the player is spawned
|
||||
virtual void ClientSpawned( edict_t *pPlayer ) OVERRIDE;
|
||||
|
||||
virtual void ClientVoice( edict_t* pEdict ) OVERRIDE;
|
||||
};
|
||||
|
||||
|
||||
class CServerGameDLL : public IServerGameDLL
|
||||
{
|
||||
public:
|
||||
virtual bool DLLInit(CreateInterfaceFn engineFactory, CreateInterfaceFn physicsFactory,
|
||||
CreateInterfaceFn fileSystemFactory, CGlobalVars *pGlobals) OVERRIDE;
|
||||
virtual void DLLShutdown( void ) OVERRIDE;
|
||||
// Get the simulation interval (must be compiled with identical values into both client and game .dll for MOD!!!)
|
||||
virtual bool ReplayInit( CreateInterfaceFn fnReplayFactory ) OVERRIDE;
|
||||
virtual float GetTickInterval( void ) const OVERRIDE;
|
||||
virtual bool GameInit( void ) OVERRIDE;
|
||||
virtual void GameShutdown( void ) OVERRIDE;
|
||||
virtual bool LevelInit( const char *pMapName, char const *pMapEntities, char const *pOldLevel, char const *pLandmarkName, bool loadGame, bool background ) OVERRIDE;
|
||||
virtual void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ) OVERRIDE;
|
||||
virtual void LevelShutdown( void ) OVERRIDE;
|
||||
virtual void GameFrame( bool simulating ) OVERRIDE; // could be called multiple times before sending data to clients
|
||||
virtual void PreClientUpdate( bool simulating ) OVERRIDE; // called after all GameFrame() calls, before sending data to clients
|
||||
|
||||
virtual ServerClass* GetAllServerClasses( void ) OVERRIDE;
|
||||
virtual const char *GetGameDescription( void ) OVERRIDE;
|
||||
virtual void CreateNetworkStringTables( void ) OVERRIDE;
|
||||
|
||||
// Save/restore system hooks
|
||||
virtual CSaveRestoreData *SaveInit( int size ) OVERRIDE;
|
||||
virtual void SaveWriteFields( CSaveRestoreData *, char const* , void *, datamap_t *, typedescription_t *, int ) OVERRIDE;
|
||||
virtual void SaveReadFields( CSaveRestoreData *, char const* , void *, datamap_t *, typedescription_t *, int ) OVERRIDE;
|
||||
virtual void SaveGlobalState( CSaveRestoreData * ) OVERRIDE;
|
||||
virtual void RestoreGlobalState( CSaveRestoreData * ) OVERRIDE;
|
||||
virtual int CreateEntityTransitionList( CSaveRestoreData *, int ) OVERRIDE;
|
||||
virtual void BuildAdjacentMapList( void ) OVERRIDE;
|
||||
|
||||
virtual void PreSave( CSaveRestoreData * ) OVERRIDE;
|
||||
virtual void Save( CSaveRestoreData * ) OVERRIDE;
|
||||
virtual void GetSaveComment( char *comment, int maxlength, float flMinutes, float flSeconds, bool bNoTime = false ) OVERRIDE;
|
||||
#ifdef _XBOX
|
||||
virtual void GetTitleName( const char *pMapName, char* pTitleBuff, int titleBuffSize ) OVERRIDE;
|
||||
#endif
|
||||
virtual void WriteSaveHeaders( CSaveRestoreData * ) OVERRIDE;
|
||||
|
||||
virtual void ReadRestoreHeaders( CSaveRestoreData * ) OVERRIDE;
|
||||
virtual void Restore( CSaveRestoreData *, bool ) OVERRIDE;
|
||||
virtual bool IsRestoring() OVERRIDE;
|
||||
|
||||
// Retrieve info needed for parsing the specified user message
|
||||
virtual bool GetUserMessageInfo( int msg_type, char *name, int maxnamelength, int& size ) OVERRIDE;
|
||||
|
||||
virtual CStandardSendProxies* GetStandardSendProxies() OVERRIDE;
|
||||
|
||||
virtual void PostInit() OVERRIDE;
|
||||
virtual void Think( bool finalTick ) OVERRIDE;
|
||||
|
||||
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ) OVERRIDE;
|
||||
|
||||
virtual void PreSaveGameLoaded( char const *pSaveName, bool bInGame ) OVERRIDE;
|
||||
|
||||
// Returns true if the game DLL wants the server not to be made public.
|
||||
// Used by commentary system to hide multiplayer commentary servers from the master.
|
||||
virtual bool ShouldHideServer( void ) OVERRIDE;
|
||||
|
||||
virtual void InvalidateMdlCache() OVERRIDE;
|
||||
|
||||
virtual void SetServerHibernation( bool bHibernating ) OVERRIDE;
|
||||
|
||||
float m_fAutoSaveDangerousTime;
|
||||
float m_fAutoSaveDangerousMinHealthToCommit;
|
||||
bool m_bIsHibernating;
|
||||
|
||||
// Called after the steam API has been activated post-level startup
|
||||
virtual void GameServerSteamAPIActivated( void ) OVERRIDE;
|
||||
|
||||
// Called after the steam API has been shutdown post-level startup
|
||||
virtual void GameServerSteamAPIShutdown( void ) OVERRIDE;
|
||||
|
||||
// interface to the new GC based lobby system
|
||||
virtual IServerGCLobby *GetServerGCLobby() OVERRIDE;
|
||||
|
||||
virtual const char *GetServerBrowserMapOverride() OVERRIDE;
|
||||
virtual const char *GetServerBrowserGameData() OVERRIDE;
|
||||
|
||||
// Called to add output to the status command
|
||||
virtual void Status( void (*print) (const char *fmt, ...) ) OVERRIDE;
|
||||
|
||||
virtual void PrepareLevelResources( /* in/out */ char *pszMapName, size_t nMapNameSize,
|
||||
/* in/out */ char *pszMapFile, size_t nMapFileSize ) OVERRIDE;
|
||||
|
||||
virtual ePrepareLevelResourcesResult AsyncPrepareLevelResources( /* in/out */ char *pszMapName, size_t nMapNameSize,
|
||||
/* in/out */ char *pszMapFile, size_t nMapFileSize,
|
||||
float *flProgress = NULL ) OVERRIDE;
|
||||
|
||||
virtual eCanProvideLevelResult CanProvideLevel( /* in/out */ char *pMapName, int nMapNameMax ) OVERRIDE;
|
||||
|
||||
// Called to see if the game server is okay with a manual changelevel or map command
|
||||
virtual bool IsManualMapChangeOkay( const char **pszReason ) OVERRIDE;
|
||||
|
||||
virtual bool GetWorkshopMap( uint32 uIndex, WorkshopMapDesc_t *pDesc ) OVERRIDE;
|
||||
|
||||
private:
|
||||
|
||||
// This can just be a wrapper on MapEntity_ParseAllEntities, but CS does some tricks in here
|
||||
// with the entity list.
|
||||
void LevelInit_ParseAllEntities( const char *pMapEntities );
|
||||
void LoadMessageOfTheDay();
|
||||
void LoadSpecificMOTDMsg( const ConVar &convar, const char *pszStringName );
|
||||
};
|
||||
|
||||
|
||||
// Normally, when the engine calls ClientPutInServer, it calls a global function in the game DLL
|
||||
// by the same name. Use this to override the function that it calls. This is used for bots.
|
||||
typedef CBasePlayer* (*ClientPutInServerOverrideFn)( edict_t *pEdict, const char *playername );
|
||||
|
||||
void ClientPutInServerOverride( ClientPutInServerOverrideFn fn );
|
||||
|
||||
// -------------------------------------------------------------------------------------------- //
|
||||
// Entity list management stuff.
|
||||
// -------------------------------------------------------------------------------------------- //
|
||||
// These are created for map entities in order as the map entities are spawned.
|
||||
class CMapEntityRef
|
||||
{
|
||||
public:
|
||||
int m_iEdict; // Which edict slot this entity got. -1 if CreateEntityByName failed.
|
||||
int m_iSerialNumber; // The edict serial number. TODO used anywhere ?
|
||||
};
|
||||
|
||||
extern CUtlLinkedList<CMapEntityRef, unsigned short> g_MapEntityRefs;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMapLoadEntityFilter : public IMapEntityFilter
|
||||
{
|
||||
public:
|
||||
virtual bool ShouldCreateEntity( const char *pClassname )
|
||||
{
|
||||
// During map load, create all the entities.
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual CBaseEntity* CreateNextEntity( const char *pClassname )
|
||||
{
|
||||
CBaseEntity *pRet = CreateEntityByName( pClassname );
|
||||
|
||||
CMapEntityRef ref;
|
||||
ref.m_iEdict = -1;
|
||||
ref.m_iSerialNumber = -1;
|
||||
|
||||
if ( pRet )
|
||||
{
|
||||
ref.m_iEdict = pRet->entindex();
|
||||
if ( pRet->edict() )
|
||||
ref.m_iSerialNumber = pRet->edict()->m_NetworkSerialNumber;
|
||||
}
|
||||
|
||||
g_MapEntityRefs.AddToTail( ref );
|
||||
return pRet;
|
||||
}
|
||||
};
|
||||
|
||||
bool IsEngineThreaded();
|
||||
|
||||
class CServerGameTags : public IServerGameTags
|
||||
{
|
||||
public:
|
||||
virtual void GetTaggedConVarList( KeyValues *pCvarTagList );
|
||||
|
||||
};
|
||||
EXPOSE_SINGLE_INTERFACE( CServerGameTags, IServerGameTags, INTERFACEVERSION_SERVERGAMETAGS );
|
||||
|
||||
#endif // GAMEINTERFACE_H
|
||||
|
||||
|
Reference in New Issue
Block a user