core/ConsoleDetours.h
author Dr!fter
Wed Jul 10 19:56:51 2013 -0400 (2013-07-10)
changeset 3939 31183c7eae14
parent 2841 dde3dd0b4b8b
child 4071 dbb9a3f48650
permissions -rw-r--r--
Update GroundEndChanged for CS:S and CS:GO
     1 /**
     2  * vim: set ts=4 sw=4 tw=99 noet :
     3  * =============================================================================
     4  * SourceMod
     5  * Copyright (C) 2004-2009 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 #ifndef _INCLUDE_SOURCEMOD_CONSOLE_DETOURS_H_
    32 #define _INCLUDE_SOURCEMOD_CONSOLE_DETOURS_H_
    33 
    34 #include "sm_globals.h"
    35 #include "sourcemm_api.h"
    36 #include "ForwardSys.h"
    37 #include <sm_trie_tpl.h>
    38 
    39 class ConsoleDetours :
    40 	public SMGlobalClass,
    41 	public IFeatureProvider
    42 {
    43 	friend class PlayerManager;
    44 	friend class GenericCommandHooker;
    45 
    46 	struct Listener
    47 	{
    48 		IChangeableForward *forward;
    49 	};
    50 public:
    51 	ConsoleDetours();
    52 public: //SMGlobalClass
    53 	void OnSourceModAllInitialized();
    54 	void OnSourceModShutdown();
    55 public: //IFeatureProvider
    56 	FeatureStatus GetFeatureStatus(FeatureType type, const char *name);
    57 public:
    58 	bool AddListener(IPluginFunction *fun, const char *command);
    59 	bool RemoveListener(IPluginFunction *fun, const char *command);
    60 private:
    61 	cell_t InternalDispatch(int client, const CCommand& args);
    62 #if SOURCE_ENGINE >= SE_ORANGEBOX
    63 	static cell_t Dispatch(ConCommand *pBase, const CCommand& args);
    64 #else
    65 	static cell_t Dispatch(ConCommand *pBase);
    66 #endif
    67 public:
    68 	FeatureStatus GetStatus();
    69 	bool IsEnabled()
    70 	{
    71 		return status == FeatureStatus_Available;
    72 	}
    73 private:
    74 	FeatureStatus status;
    75 	IChangeableForward *m_pForward;
    76 	KTrie<Listener*> m_CmdLookup;
    77 	List<Listener*> m_Listeners;
    78 };
    79 
    80 extern ConsoleDetours g_ConsoleDetours;
    81 
    82 #endif /* _INCLUDE_SOURCEMOD_CONSOLE_DETOURS_H_ */
    83