forked from Source-Python-Dev-Team/Source.Python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsp_main.h
More file actions
127 lines (112 loc) · 5.3 KB
/
Copy pathsp_main.h
File metadata and controls
127 lines (112 loc) · 5.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**
* =============================================================================
* Source Python
* Copyright (C) 2012 Source Python Development Team. All rights reserved.
* =============================================================================
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* As a special exception, the Source Python Team gives you permission
* to link the code of this program (as well as its derivative works) to
* "Half-Life 2," the "Source Engine," and any Game MODs that run on software
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, the Source.Python
* Development Team grants this exception to all derivative works.
*/
#ifndef _SOURCEPYTHON_MAIN_H
#define _SOURCEPYTHON_MAIN_H
//---------------------------------------------------------------------------------
// Includes
//---------------------------------------------------------------------------------
#include "engine/iserverplugin.h"
#include "igameevents.h"
#include "modules/memory/memory_tools.h"
#include "utilities/baseentity.h"
#include "game/shared/entitylist_base.h"
#include "game/server/entitylist.h"
#include "datacache/imdlcache.h"
//---------------------------------------------------------------------------------
// Definitions
//---------------------------------------------------------------------------------
#define MAX_GAME_PATH 1024
#define MSG_PREFIX "[Source.Python] "
//---------------------------------------------------------------------------------
// Purpose: a sample 3rd party plugin class
//---------------------------------------------------------------------------------
class CSourcePython: public IServerPluginCallbacks, public IGameEventListener2, public IEntityListener, public IMDLCacheNotify
{
public:
CSourcePython();
~CSourcePython();
// IServerPluginCallbacks methods
virtual bool Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory );
virtual void Unload( void );
virtual void Pause( void );
virtual void UnPause( void );
virtual const char *GetPluginDescription( void );
virtual void LevelInit( char const *pMapName );
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 );
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 PLUGIN_RESULT ClientConnect( bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen );
// -------------------------------------------
// Orangebox.
// -------------------------------------------
virtual PLUGIN_RESULT ClientCommand( edict_t *pEntity, const CCommand &args );
// -------------------------------------------
// Alien Swarm.
// -------------------------------------------
#ifdef ENGINE_CSGO
virtual int GetEventDebugID( void ) { return EVENT_DEBUG_ID_INIT; }
virtual void ClientFullyConnect( edict_t *pEntity );
#endif
#if defined(ENGINE_CSGO) || defined(ENGINE_BMS)
virtual void OnEdictAllocated( edict_t *edict );
virtual void OnEdictFreed( const edict_t *edict );
#endif
virtual PLUGIN_RESULT NetworkIDValidated( const char *pszUserName, const char *pszNetworkID );
virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity,
EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue );
// -------------------------------------------
// IGameEventListener Interface.
// -------------------------------------------
virtual void FireGameEvent( IGameEvent* event );
virtual int GetCommandIndex() { return m_iClientCommandIndex; }
// -------------------------------------------
// IEntityListener Interface.
// -------------------------------------------
#ifdef ENGINE_BMS
virtual void OnEntityPreSpawned( CBaseEntity *pEntity );
#endif
virtual void OnEntityCreated( CBaseEntity *pEntity );
virtual void OnEntitySpawned( CBaseEntity *pEntity );
virtual void OnEntityDeleted( CBaseEntity *pEntity );
// -------------------------------------------
// IMDLCacheNotify Interface.
// -------------------------------------------
virtual void OnDataLoaded( MDLCacheDataType_t type, MDLHandle_t handle );
virtual void OnDataUnloaded( MDLCacheDataType_t type, MDLHandle_t handle );
#ifdef ENGINE_CSGO
virtual void OnCombinerPreCache(MDLCacheDataType_t type, MDLHandle_t handle );
virtual bool ShouldSupressLoadWarning(unsigned short a);
#endif
private:
int m_iClientCommandIndex;
IMDLCacheNotify* m_pOldMDLCacheNotifier;
};
#endif // _SOURCEPYTHON_MAIN_H