core/sourcemod.h
author Borja Ferrer <faluco@alliedmods.net>
Sun Feb 04 22:41:44 2007 +0000 (2007-02-04)
changeset 430 ed37e9767ed4
parent 422 5ef0f5610c2a
child 448 25984ddd0ce0
permissions -rw-r--r--
Optimized forwards, now paused functions are stored in a temp list so we dont have to check if they're runnable on each function execution.
dvander@370
     1
/**
dvander@370
     2
 * ===============================================================
dvander@370
     3
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@370
     4
 * ===============================================================
dvander@370
     5
 *
dvander@370
     6
 * This file is not open source and may not be copied without explicit
dvander@370
     7
 * written permission of AlliedModders LLC.  This file may not be redistributed 
dvander@370
     8
 * in whole or significant part.
dvander@370
     9
 * For information, see LICENSE.txt or http://www.sourcemod.net/license.php
dvander@370
    10
 *
dvander@370
    11
 * Version: $Id$
dvander@370
    12
 */
dvander@370
    13
dvander@159
    14
#ifndef _INCLUDE_SOURCEMOD_GLOBALHEADER_H_
dvander@159
    15
#define _INCLUDE_SOURCEMOD_GLOBALHEADER_H_
dvander@159
    16
dvander@160
    17
#include "sm_globals.h"
dvander@317
    18
#include <ISourceMod.h>
dvander@159
    19
dvander@162
    20
/**
dvander@162
    21
 * @brief Implements SourceMod's global overall management, API, and logic
dvander@162
    22
 */
dvander@162
    23
dvander@317
    24
class SourceModBase : public ISourceMod
dvander@160
    25
{
dvander@160
    26
public:
dvander@209
    27
	SourceModBase();
dvander@209
    28
public:
dvander@160
    29
	/**
dvander@160
    30
	 * @brief Initializes SourceMod, or returns an error on failure.
dvander@160
    31
	 */
dvander@160
    32
	bool InitializeSourceMod(char *error, size_t err_max, bool late);
dvander@209
    33
dvander@209
    34
	/** 
dvander@209
    35
	 * @brief Starts everything SourceMod needs to run
dvander@209
    36
	 */
dvander@209
    37
	void StartSourceMod(bool late);
dvander@209
    38
faluco@289
    39
	/** 
faluco@289
    40
	* @brief Shuts down all SourceMod components
faluco@289
    41
	*/
faluco@289
    42
	void CloseSourceMod();
faluco@289
    43
dvander@209
    44
	/**
dvander@209
    45
	 * @brief Map change hook
dvander@209
    46
	 */
dvander@209
    47
	bool LevelInit(char const *pMapName, char const *pMapEntities, char const *pOldLevel, char const *pLandmarkName, bool loadGame, bool background);
dvander@209
    48
faluco@333
    49
	/**
faluco@333
    50
	* @brief Level shutdown hook
faluco@333
    51
	*/
faluco@333
    52
	void LevelShutdown();
faluco@333
    53
dvander@209
    54
	/** 
dvander@209
    55
	 * @brief Returns whether or not a mapload is in progress
dvander@209
    56
	 */
dvander@209
    57
	bool IsMapLoading();
dvander@209
    58
faluco@422
    59
	/** 
faluco@422
    60
	* @brief Stores the global target index.
faluco@422
    61
	*/
faluco@422
    62
	void SetGlobalTarget(unsigned int index);
faluco@422
    63
faluco@422
    64
	/** 
faluco@422
    65
	* @brief Returns the global target index.
faluco@422
    66
	*/
faluco@422
    67
	unsigned int GetGlobalTarget() const;
faluco@422
    68
dvander@317
    69
public: //ISourceMod
dvander@317
    70
	const char *GetModPath();
dvander@317
    71
	const char *GetSourceModPath();
dvander@317
    72
	size_t BuildPath(PathType type, char *buffer, size_t maxlength, char *format, ...);
dvander@317
    73
	void LogMessage(IExtension *pExt, const char *format, ...);
dvander@317
    74
	void LogError(IExtension *pExt, const char *format, ...);
dvander@347
    75
	size_t FormatString(char *buffer, size_t maxlength, IPluginContext *pContext, const cell_t *params, unsigned int param);
dvander@209
    76
private:
dvander@209
    77
	/**
dvander@209
    78
	 * @brief Loading plugins
dvander@209
    79
	 */
dvander@209
    80
	void DoGlobalPluginLoads();
dvander@209
    81
private:
dvander@209
    82
	char m_SMBaseDir[PLATFORM_MAX_PATH+1];
dvander@345
    83
	char m_SMRelDir[PLATFORM_MAX_PATH+1];
dvander@209
    84
	bool m_IsMapLoading;
faluco@333
    85
	bool m_ExecPluginReload;
faluco@422
    86
	unsigned int m_target;
dvander@211
    87
};
dvander@211
    88
dvander@160
    89
extern SourceModBase g_SourceMod;
dvander@159
    90
dvander@159
    91
#endif //_INCLUDE_SOURCEMOD_GLOBALHEADER_H_