You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.6 KiB
112 lines
3.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef SV_SERVERPLUGIN_H |
|
#define SV_SERVERPLUGIN_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "eiface.h" |
|
#include "engine/iserverplugin.h" |
|
|
|
//--------------------------------------------------------------------------------- |
|
// Purpose: a single plugin |
|
//--------------------------------------------------------------------------------- |
|
class CPlugin |
|
{ |
|
public: |
|
CPlugin(); |
|
~CPlugin(); |
|
|
|
const char *GetName(); |
|
bool Load( const char *fileName ); |
|
void Unload(); |
|
void Disable( bool state ); |
|
bool IsDisabled() { return m_bDisable; } |
|
int GetPluginInterfaceVersion() const { return m_iPluginInterfaceVersion; } |
|
|
|
IServerPluginCallbacks *GetCallback(); |
|
|
|
private: |
|
void SetName( const char *name ); |
|
char m_szName[128]; |
|
bool m_bDisable; |
|
|
|
IServerPluginCallbacks *m_pPlugin; |
|
int m_iPluginInterfaceVersion; // Tells if we got INTERFACEVERSION_ISERVERPLUGINCALLBACKS or an older version. |
|
|
|
CSysModule *m_pPluginModule; |
|
}; |
|
|
|
//--------------------------------------------------------------------------------- |
|
// Purpose: implenents passthroughs for plugins and their special helper functions |
|
//--------------------------------------------------------------------------------- |
|
class CServerPlugin : public IServerPluginHelpers |
|
{ |
|
public: |
|
CServerPlugin(); |
|
~CServerPlugin(); |
|
|
|
// management functions |
|
void LoadPlugins(); |
|
void UnloadPlugins(); |
|
bool UnloadPlugin( int index ); |
|
bool LoadPlugin( const char *fileName ); |
|
|
|
void DisablePlugins(); |
|
void DisablePlugin( int index ); |
|
|
|
void EnablePlugins(); |
|
void EnablePlugin( int index ); |
|
|
|
void PrintDetails(); |
|
|
|
// multiplex the passthroughs |
|
virtual void LevelInit( char const *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 GameFrame( bool simulating ); |
|
virtual void LevelShutdown( void ); |
|
|
|
virtual void ClientActive( edict_t *pEntity, bool bLoadGame ); |
|
virtual void ClientDisconnect( edict_t *pEntity ); |
|
virtual void ClientPutInServer( edict_t *pEntity, char const *playername ); |
|
virtual void SetCommandClient( int index ); |
|
virtual void ClientSettingsChanged( edict_t *pEdict ); |
|
virtual bool ClientConnect( edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen ); |
|
virtual void ClientCommand( edict_t *pEntity, const CCommand &args ); |
|
virtual void NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ); |
|
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ); |
|
|
|
|
|
// implement helpers |
|
virtual void CreateMessage( edict_t *pEntity, DIALOG_TYPE type, KeyValues *data, IServerPluginCallbacks *plugin ); |
|
virtual void ClientCommand( edict_t *pEntity, const char *cmd ); |
|
virtual QueryCvarCookie_t StartQueryCvarValue( edict_t *pEntity, const char *pName ); |
|
|
|
int GetNumLoadedPlugins( void ){ return m_Plugins.Count(); } |
|
|
|
private: |
|
CUtlVector<CPlugin *> m_Plugins; |
|
IPluginHelpersCheck *m_PluginHelperCheck; |
|
|
|
public: |
|
//New plugin interface callbacks |
|
virtual void OnEdictAllocated( edict_t *edict ); |
|
virtual void OnEdictFreed( const edict_t *edict ); |
|
}; |
|
|
|
extern CServerPlugin *g_pServerPluginHandler; |
|
|
|
class IClient; |
|
QueryCvarCookie_t SendCvarValueQueryToClient( IClient *client, const char *pCvarName, bool bPluginQuery ); |
|
|
|
#endif //SV_SERVERPLUGIN_H
|
|
|