core/sourcemod.h
author David Anderson <dvander@alliedmods.net>
Mon Mar 12 00:06:20 2007 +0000 (2007-03-12)
changeset 599 3a098eff4890
parent 598 991d7e247a2c
child 652 d62a08ba6318
permissions -rw-r--r--
used a better error number
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>
faluco@484
    19
#include <sh_stack.h>
faluco@484
    20
#include "CDataPack.h"
faluco@484
    21
faluco@484
    22
using namespace SourceHook;
dvander@159
    23
dvander@162
    24
/**
dvander@162
    25
 * @brief Implements SourceMod's global overall management, API, and logic
dvander@162
    26
 */
dvander@162
    27
dvander@317
    28
class SourceModBase : public ISourceMod
dvander@160
    29
{
dvander@160
    30
public:
dvander@209
    31
	SourceModBase();
dvander@209
    32
public:
dvander@160
    33
	/**
dvander@160
    34
	 * @brief Initializes SourceMod, or returns an error on failure.
dvander@160
    35
	 */
dvander@160
    36
	bool InitializeSourceMod(char *error, size_t err_max, bool late);
dvander@209
    37
dvander@209
    38
	/** 
dvander@209
    39
	 * @brief Starts everything SourceMod needs to run
dvander@209
    40
	 */
dvander@209
    41
	void StartSourceMod(bool late);
dvander@209
    42
faluco@289
    43
	/** 
dvander@448
    44
	 * @brief Shuts down all SourceMod components
dvander@448
    45
	 */
faluco@289
    46
	void CloseSourceMod();
faluco@289
    47
dvander@209
    48
	/**
dvander@209
    49
	 * @brief Map change hook
dvander@209
    50
	 */
dvander@209
    51
	bool LevelInit(char const *pMapName, char const *pMapEntities, char const *pOldLevel, char const *pLandmarkName, bool loadGame, bool background);
dvander@209
    52
faluco@333
    53
	/**
dvander@448
    54
	 * @brief Level shutdown hook
dvander@448
    55
	 */
faluco@333
    56
	void LevelShutdown();
faluco@333
    57
dvander@209
    58
	/** 
faluco@484
    59
	 * @brief Returns whether or not a map load is in progress
dvander@209
    60
	 */
faluco@484
    61
	bool IsMapLoading() const;
dvander@209
    62
faluco@422
    63
	/** 
dvander@448
    64
	 * @brief Stores the global target index.
dvander@448
    65
	 */
faluco@422
    66
	void SetGlobalTarget(unsigned int index);
faluco@422
    67
faluco@422
    68
	/** 
dvander@448
    69
	 * @brief Returns the global target index.
dvander@448
    70
	 */
faluco@422
    71
	unsigned int GetGlobalTarget() const;
faluco@484
    72
	
faluco@484
    73
	/** 
faluco@484
    74
	* @brief Sets whether if SoureMod needs to check player auths.
faluco@484
    75
	*/
faluco@484
    76
	void SetAuthChecking(bool set);
dvander@317
    77
public: //ISourceMod
faluco@484
    78
	const char *GetModPath() const;
faluco@484
    79
	const char *GetSourceModPath() const;
dvander@317
    80
	size_t BuildPath(PathType type, char *buffer, size_t maxlength, char *format, ...);
dvander@317
    81
	void LogMessage(IExtension *pExt, const char *format, ...);
dvander@317
    82
	void LogError(IExtension *pExt, const char *format, ...);
dvander@347
    83
	size_t FormatString(char *buffer, size_t maxlength, IPluginContext *pContext, const cell_t *params, unsigned int param);
faluco@484
    84
	IDataPack *CreateDataPack();
faluco@484
    85
	void FreeDataPack(IDataPack *pack);
faluco@484
    86
	HandleType_t GetDataPackHandleType(bool readonly=false);
dvander@209
    87
private:
dvander@209
    88
	/**
dvander@209
    89
	 * @brief Loading plugins
dvander@209
    90
	 */
dvander@209
    91
	void DoGlobalPluginLoads();
dvander@448
    92
	void GameFrame(bool simulating);
dvander@209
    93
private:
faluco@484
    94
	CStack<CDataPack *> m_freepacks;
dvander@209
    95
	char m_SMBaseDir[PLATFORM_MAX_PATH+1];
dvander@345
    96
	char m_SMRelDir[PLATFORM_MAX_PATH+1];
dvander@209
    97
	bool m_IsMapLoading;
faluco@333
    98
	bool m_ExecPluginReload;
faluco@422
    99
	unsigned int m_target;
dvander@448
   100
	bool m_CheckingAuth;
dvander@211
   101
};
dvander@211
   102
dvander@160
   103
extern SourceModBase g_SourceMod;
faluco@505
   104
extern HandleType_t g_WrBitBufType;
faluco@598
   105
extern HandleType_t g_RdBitBufType;
dvander@159
   106
dvander@159
   107
#endif //_INCLUDE_SOURCEMOD_GLOBALHEADER_H_