core/sourcemm_api.h
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
child 2289 44045ead61cd
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
     1 /**
     2  * vim: set ts=4 :
     3  * =============================================================================
     4  * SourceMod
     5  * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
     6  * =============================================================================
     7  *
     8  * This program is free software; you can redistribute it and/or modify it under
     9  * the terms of the GNU General Public License, version 3.0, as published by the
    10  * Free Software Foundation.
    11  * 
    12  * This program is distributed in the hope that it will be useful, but WITHOUT
    13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    14  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    15  * details.
    16  *
    17  * You should have received a copy of the GNU General Public License along with
    18  * this program.  If not, see <http://www.gnu.org/licenses/>.
    19  *
    20  * As a special exception, AlliedModders LLC gives you permission to link the
    21  * code of this program (as well as its derivative works) to "Half-Life 2," the
    22  * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    23  * by the Valve Corporation.  You must obey the GNU General Public License in
    24  * all respects for all other code used.  Additionally, AlliedModders LLC grants
    25  * this exception to all derivative works.  AlliedModders LLC defines further
    26  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    27  * or <http://www.sourcemod.net/license.php>.
    28  *
    29  * Version: $Id$
    30  */
    31 
    32 #ifndef _INCLUDE_SOURCEMOD_MM_API_H_
    33 #define _INCLUDE_SOURCEMOD_MM_API_H_
    34 
    35 #if defined ORANGEBOX_BUILD
    36 	#include "convar_sm_ob.h"
    37 #else
    38 	#include "convar_sm.h"
    39 #endif
    40 #include <ISmmPlugin.h>
    41 #include <eiface.h>
    42 #include <igameevents.h>
    43 #include <iplayerinfo.h>
    44 #include <random.h>
    45 #include <filesystem.h>
    46 #include <IEngineSound.h>
    47 
    48 #ifndef METAMOD_PLAPI_VERSION
    49 	#include <metamod_wrappers.h>
    50 #endif
    51 
    52 /**
    53  * @file Contains wrappers around required Metamod:Source API exports
    54  */
    55 
    56 class SourceMod_Core : 
    57 	public ISmmPlugin,
    58 	public IMetamodListener
    59 {
    60 public:
    61 	bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late);
    62 	bool Unload(char *error, size_t maxlen);
    63 	bool Pause(char *error, size_t maxlen);
    64 	bool Unpause(char *error, size_t maxlen);
    65 	void AllPluginsLoaded();
    66 public:
    67 	const char *GetAuthor();
    68 	const char *GetName();
    69 	const char *GetDescription();
    70 	const char *GetURL();
    71 	const char *GetLicense();
    72 	const char *GetVersion();
    73 	const char *GetDate();
    74 	const char *GetLogTag();
    75 public:
    76 	void OnVSPListening(IServerPluginCallbacks *iface);
    77 #if defined METAMOD_PLAPI_VERSION
    78 	void OnUnlinkConCommandBase(PluginId id, ConCommandBase *pCommand);
    79 #else
    80 	void OnPluginUnload(PluginId id);
    81 #endif
    82 	void *OnMetamodQuery(const char *iface, int *ret);
    83 };
    84 
    85 extern SourceMod_Core g_SourceMod_Core;
    86 extern IVEngineServer *engine;
    87 extern IServerGameDLL *gamedll;
    88 extern IServerGameClients *serverClients;
    89 extern ICvar *icvar;
    90 extern ISmmPluginManager *g_pMMPlugins;
    91 extern CGlobalVars *gpGlobals;
    92 extern IGameEventManager2 *gameevents;
    93 extern SourceHook::CallClass<IVEngineServer> *enginePatch;
    94 extern SourceHook::CallClass<IServerGameDLL> *gamedllPatch;
    95 extern IUniformRandomStream *engrandom;
    96 extern IPlayerInfoManager *playerinfo;
    97 extern IBaseFileSystem *basefilesystem;
    98 extern IEngineSound *enginesound;
    99 extern IServerPluginHelpers *serverpluginhelpers;
   100 extern IServerPluginCallbacks *vsp_interface;
   101 extern int vsp_version;
   102 
   103 #define ENGINE_CALL(func)		SH_CALL(enginePatch, &IVEngineServer::func)
   104 #define SERVER_CALL(func)		SH_CALL(gamedllPatch, &IServerGameDLL::func)
   105 
   106 PLUGIN_GLOBALVARS();
   107 
   108 #endif //_INCLUDE_SOURCEMOD_MM_API_H_
   109