core/sm_globals.h
author David Anderson <dvander@alliedmods.net>
Thu Jun 07 18:50:52 2007 +0000 (2007-06-07)
changeset 916 39ae94ad60ce
parent 893 a3bc816549a8
child 1157 61c7092246c6
permissions -rw-r--r--
Fixed bugs amb352 and amb274
     1 /**
     2  * vim: set ts=4 :
     3  * ===============================================================
     4  * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
     5  * ===============================================================
     6  *
     7  * This file is not open source and may not be copied without explicit
     8  * written permission of AlliedModders LLC.  This file may not be redistributed 
     9  * in whole or significant part.
    10  * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
    11  *
    12  * Version: $Id$
    13  */
    14 
    15 #ifndef _INCLUDE_SOURCEMOD_GLOBALS_H_
    16 #define _INCLUDE_SOURCEMOD_GLOBALS_H_
    17 
    18 /**
    19  * @file Contains global headers that most files in SourceMod will need.
    20  */
    21 
    22 #include <sp_vm_types.h>
    23 #include <sp_vm_api.h>
    24 #include "sm_platform.h"
    25 #include <IShareSys.h>
    26 
    27 using namespace SourcePawn;
    28 using namespace SourceMod;
    29 
    30 class IServerPluginCallbacks;
    31 
    32 /**
    33  * @brief Lists result codes possible from attempting to set a core configuration option.
    34  */
    35 enum ConfigResult
    36 {
    37 	ConfigResult_Accept = 0,	/**< Config option was successfully set */
    38 	ConfigResult_Reject = 1,	/**< Config option was given an invalid value and was rejected */
    39 	ConfigResult_Ignore = 2		/**< Config option was invalid, but ignored */
    40 };
    41 
    42 /**
    43  * @brief Lists possible sources of a config option change
    44  */
    45 enum ConfigSource
    46 {
    47 	ConfigSource_File = 0,		/**< Config option was set from config file (core.cfg) */
    48 	ConfigSource_Console = 1,	/**< Config option was set from console command (sm config) */
    49 };
    50 
    51 /** 
    52  * @brief Any class deriving from this will be automatically initiated/shutdown by SourceMod
    53  */
    54 class SMGlobalClass
    55 {
    56 	friend class SourceMod_Core;
    57 	friend class SourceModBase;
    58 	friend class CoreConfig;
    59 public:
    60 	SMGlobalClass();
    61 public:
    62 	/**
    63 	 * @brief Called when SourceMod is initially loading
    64 	 */
    65 	virtual void OnSourceModStartup(bool late)
    66 	{
    67 	}
    68 
    69 	/**
    70 	 * @brief Called after all global classes have initialized
    71 	 */
    72 	virtual void OnSourceModAllInitialized()
    73 	{
    74 	}
    75 
    76 	/**
    77 	 * @brief Called when SourceMod is shutting down
    78 	 */
    79 	virtual void OnSourceModShutdown()
    80 	{
    81 	}
    82 
    83 	/**
    84 	 * @brief Called after SourceMod is completely shut down
    85 	 */
    86 	virtual void OnSourceModAllShutdown()
    87 	{
    88 	}
    89 
    90 	/**
    91 	 * @brief Called when a core config option is changed.
    92 	 * @note This is called once BEFORE OnSourceModStartup() when SourceMod is loading
    93 	 * @note It can then be called again when the 'sm config' command is used
    94 	 */
    95 	virtual ConfigResult OnSourceModConfigChanged(const char *key, 
    96 												  const char *value, 
    97 												  ConfigSource source,
    98 												  char *error, 
    99 												  size_t maxlength)
   100 	{
   101 		return ConfigResult_Ignore;
   102 	}
   103 
   104 	/**
   105 	 * @brief Called when the level changes.
   106 	 */
   107 	virtual void OnSourceModLevelChange(const char *mapName)
   108 	{
   109 	}
   110 
   111 	/**
   112 	 * @brief Called when the level ends.
   113 	 */
   114 	virtual void OnSourceModLevelEnd()
   115 	{
   116 	}
   117 
   118 	/**
   119 	 * @brief Called after plugins are loaded on mapchange.
   120 	 */
   121 	virtual void OnSourceModPluginsLoaded()
   122 	{
   123 	}
   124 
   125 	/**
   126 	 * @brief Called when SourceMod receives a pointer to IServerPluginCallbacks from SourceMM
   127 	 */
   128 	virtual void OnSourceModVSPReceived(IServerPluginCallbacks *iface)
   129 	{
   130 	}
   131 
   132 	/**
   133 	 * @brief Called once all MM:S plugins are loaded.
   134 	 */
   135 	virtual void OnSourceModGameInitialized()
   136 	{
   137 	}
   138 private:
   139 	SMGlobalClass *m_pGlobalClassNext;
   140 	static SMGlobalClass *head;
   141 };
   142 
   143 extern ISourcePawnEngine *g_pSourcePawn;
   144 extern IVirtualMachine *g_pVM;
   145 extern IdentityToken_t *g_pCoreIdent;
   146 
   147 #include "sm_autonatives.h"
   148 
   149 #endif //_INCLUDE_SOURCEMOD_GLOBALS_H_