core/sourcemod.h
author Borja Ferrer <faluco@alliedmods.net>
Sat Dec 16 02:16:21 2006 +0000 (2006-12-16)
changeset 216 38b1bdbc5bc9
parent 211 4c77142eaf36
child 229 7819a42069e4
permissions -rw-r--r--
Added initial console commands for plugins
fixed crash in plugin destructor
fixed compilation not being freed causing a crash
fixed small issues in plugin system
fixed plugin iterator not being reseted when freed and not being initialized it's current pointer.
fixed a bug where insertion of a prefixed string would not check whether a value could be set.
dvander@159
     1
#ifndef _INCLUDE_SOURCEMOD_GLOBALHEADER_H_
dvander@159
     2
#define _INCLUDE_SOURCEMOD_GLOBALHEADER_H_
dvander@159
     3
dvander@160
     4
#include "sm_globals.h"
dvander@159
     5
dvander@162
     6
/**
dvander@162
     7
 * @brief Implements SourceMod's global overall management, API, and logic
dvander@162
     8
 */
dvander@162
     9
dvander@160
    10
class SourceModBase
dvander@160
    11
{
dvander@160
    12
public:
dvander@209
    13
	SourceModBase();
dvander@209
    14
public:
dvander@160
    15
	/**
dvander@160
    16
	 * @brief Initializes SourceMod, or returns an error on failure.
dvander@160
    17
	 */
dvander@160
    18
	bool InitializeSourceMod(char *error, size_t err_max, bool late);
dvander@209
    19
dvander@209
    20
	/** 
dvander@209
    21
	 * @brief Starts everything SourceMod needs to run
dvander@209
    22
	 */
dvander@209
    23
	void StartSourceMod(bool late);
dvander@209
    24
dvander@209
    25
	/**
dvander@209
    26
	 * @brief Map change hook
dvander@209
    27
	 */
dvander@209
    28
	bool LevelInit(char const *pMapName, char const *pMapEntities, char const *pOldLevel, char const *pLandmarkName, bool loadGame, bool background);
dvander@209
    29
dvander@209
    30
	/** 
dvander@209
    31
	 * @brief Returns whether or not a mapload is in progress
dvander@209
    32
	 */
dvander@209
    33
	bool IsMapLoading();
dvander@209
    34
dvander@209
    35
	/**
dvander@209
    36
	 * @brief Returns the base SourceMod folder.
dvander@209
    37
	 */
dvander@209
    38
	const char *GetSMBaseDir();
dvander@209
    39
dvander@211
    40
	/**
dvander@211
    41
	 * @brief Returns whether our load in this map is late.
dvander@211
    42
	 */
dvander@211
    43
	bool IsLateLoadInMap();
dvander@209
    44
private:
dvander@209
    45
	/**
dvander@209
    46
	 * @brief Loading plugins
dvander@209
    47
	 */
dvander@209
    48
	void DoGlobalPluginLoads();
dvander@209
    49
private:
dvander@209
    50
	char m_SMBaseDir[PLATFORM_MAX_PATH+1];
dvander@209
    51
	bool m_IsMapLoading;
dvander@211
    52
	bool m_IsLateLoadInMap;
dvander@211
    53
};
dvander@211
    54
dvander@211
    55
/** 
dvander@211
    56
 * @brief Any class deriving from this will be automatically initiated/shutdown by SourceMod
dvander@211
    57
 */
dvander@211
    58
class SMGlobalClass
dvander@211
    59
{
dvander@211
    60
	friend class SourceModBase;
dvander@211
    61
public:
dvander@211
    62
	SMGlobalClass();
dvander@211
    63
public:
dvander@211
    64
	/**
dvander@211
    65
	 * @brief Called when SourceMod is initially loading
dvander@211
    66
	 */
dvander@211
    67
	virtual void OnSourceModStartup(bool late)
dvander@211
    68
	{
dvander@211
    69
	}
dvander@211
    70
dvander@211
    71
	/**
dvander@211
    72
	 * @brief Called after all global classes have initialized
dvander@211
    73
	 */
dvander@211
    74
	virtual void OnSourceModAllInitialized()
dvander@211
    75
	{
dvander@211
    76
	}
dvander@211
    77
dvander@211
    78
	/**
dvander@211
    79
	 * @brief Called when SourceMod is shutting down
dvander@211
    80
	 */
dvander@211
    81
	virtual void OnSourceModShutdown()
dvander@211
    82
	{
dvander@211
    83
	}
dvander@211
    84
private:
dvander@211
    85
	SMGlobalClass *m_pGlobalClassNext;
dvander@211
    86
	static SMGlobalClass *head;
dvander@160
    87
};
dvander@160
    88
dvander@160
    89
extern SourceModBase g_SourceMod;
dvander@159
    90
dvander@159
    91
#endif //_INCLUDE_SOURCEMOD_GLOBALHEADER_H_