public/IGameConfigs.h
author David Anderson <dvander@alliedmods.net>
Wed Jul 25 01:18:11 2007 +0000 (2007-07-25)
changeset 1163 0bb03cb6277b
parent 949 4cc7fd7adb8a
child 1226 478550a4d5ec
permissions -rw-r--r--
- added MenuAction_DisplayItem callback for plugins
- fixed various bugs in MenuAction_Display
- added an "access" parameter for IMenuManager. better to do this now than later, even though it's not used yet
- hard bumped menu api to change the OnMenuDisplayItem callback. sorry!
dvander@547
     1
/**
ds@653
     2
 * vim: set ts=4 :
ds@653
     3
 * ===============================================================
ds@653
     4
 * SourceMod, Copyright (C) 2004-2007 AlliedModders LLC. 
ds@653
     5
 * All rights reserved.
ds@653
     6
 * ===============================================================
ds@653
     7
 *
ds@653
     8
 *  This file is part of the SourceMod/SourcePawn SDK.  This file may only be 
ds@653
     9
 * used or modified under the Terms and Conditions of its License Agreement, 
ds@653
    10
 * which is found in public/licenses/LICENSE.txt.  As of this notice, derivative 
ds@653
    11
 * works must be licensed under the GNU General Public License (version 2 or 
ds@653
    12
 * greater).  A copy of the GPL is included under public/licenses/GPL.txt.
ds@653
    13
 * 
ds@653
    14
 * To view the latest information, see: http://www.sourcemod.net/license.php
ds@653
    15
 *
ds@653
    16
 * Version: $Id$
ds@653
    17
 */
dvander@547
    18
dvander@547
    19
#ifndef _INCLUDE_SOURCEMOD_GAMECONFIG_SYSTEM_H_
dvander@547
    20
#define _INCLUDE_SOURCEMOD_GAMECONFIG_SYSTEM_H_
dvander@547
    21
dvander@547
    22
#include <IShareSys.h>
dvander@949
    23
#include <IHandleSys.h>
dvander@547
    24
dvander@547
    25
/**
faluco@620
    26
 * @file IGameConfigs.h
dvander@547
    27
 * @brief Abstracts game private data configuration.
dvander@547
    28
 */
dvander@547
    29
dvander@547
    30
#define SMINTERFACE_GAMECONFIG_NAME			"IGameConfigManager"
dvander@949
    31
#define SMINTERFACE_GAMECONFIG_VERSION		3
dvander@547
    32
dvander@547
    33
class SendProp;
dvander@547
    34
dvander@547
    35
namespace SourceMod
dvander@547
    36
{
dvander@547
    37
	/**
dvander@547
    38
	 * @brief Describes a game private data config file
dvander@547
    39
	 */
dvander@547
    40
	class IGameConfig
dvander@547
    41
	{
dvander@547
    42
	public:
dvander@547
    43
		/**
dvander@547
    44
		 * @brief Returns an offset value.
dvander@547
    45
		 *
dvander@547
    46
		 * @param key			Key to retrieve from the offset section.
dvander@547
    47
		 * @param value			Pointer to store the offset value in.
dvander@547
    48
		 * @return				True if found, false otherwise.
dvander@547
    49
		 */
dvander@547
    50
		virtual bool GetOffset(const char *key, int *value) =0;
dvander@547
    51
dvander@547
    52
		/**
dvander@548
    53
		 * @brief Returns information about a dynamic offset.
dvander@547
    54
		 *
dvander@547
    55
		 * @param key			Key to retrieve from the property section.
faluco@703
    56
		 * @return				A SendProp pointer, or NULL if not found.
dvander@547
    57
		 */
dvander@547
    58
		virtual SendProp *GetSendProp(const char *key) =0;
dvander@548
    59
dvander@548
    60
		/**
dvander@548
    61
		 * @brief Returns the value of a key from the "Keys" section.
dvander@548
    62
		 *
dvander@548
    63
		 * @param key			Key to retrieve from the Keys section.
dvander@548
    64
		 * @return				String containing the value, or NULL if not found.
dvander@548
    65
		 */
dvander@548
    66
		virtual const char *GetKeyValue(const char *key) =0;
dvander@947
    67
dvander@947
    68
		/**
dvander@947
    69
		 * @brief Retrieves a cached memory signature.
dvander@947
    70
		 *
dvander@947
    71
		 * @param key			Name of the signature.
dvander@947
    72
		 * @param addr			Pointer to store the memory address in.
dvander@949
    73
		 * @return				True if the key was found, false otherwise.
dvander@949
    74
		 *						Note that true is a valid return even if the
dvander@949
    75
		 *						address is NULL.
dvander@947
    76
		 */
dvander@947
    77
		virtual bool GetMemSig(const char *key, void **addr) =0;
dvander@547
    78
	};
dvander@547
    79
dvander@547
    80
	/**
dvander@547
    81
	 * @brief Manages game config files
dvander@547
    82
	 */
dvander@547
    83
	class IGameConfigManager : public SMInterface
dvander@547
    84
	{
dvander@547
    85
	public:
dvander@547
    86
		const char *GetInterfaceName()
dvander@547
    87
		{
dvander@547
    88
			return SMINTERFACE_GAMECONFIG_NAME;
dvander@547
    89
		}
dvander@547
    90
		unsigned int GetInterfaceVersion()
dvander@547
    91
		{
dvander@547
    92
			return SMINTERFACE_GAMECONFIG_VERSION;
dvander@547
    93
		}
dvander@547
    94
	public:
dvander@547
    95
		/**
dvander@547
    96
		 * @brief Loads or finds an already loaded game config file.  
dvander@547
    97
		 *
dvander@949
    98
		 * @param file		File to load.  The path must be relative to the 
dvander@949
    99
		 *					'gamedata' folder and the extension should be 
dvander@949
   100
		 *					omitted.
dvander@949
   101
		 * @param pConfig	Pointer to store the game config pointer.  Pointer 
dvander@949
   102
		 *					will be valid even on failure.
dvander@547
   103
		 * @param error		Optional error message buffer.
dvander@547
   104
		 * @param maxlength	Maximum length of the error buffer.
dvander@547
   105
		 * @return			True on success, false if the file failed.
dvander@547
   106
		 */
dvander@949
   107
		virtual bool LoadGameConfigFile(const char *file, 
dvander@949
   108
			IGameConfig **pConfig, 
dvander@949
   109
			char *error, 
dvander@949
   110
			size_t maxlength) =0;
dvander@547
   111
dvander@547
   112
		/**
dvander@949
   113
		 * @brief Closes an IGameConfig pointer.  Since a file can be loaded 
dvander@949
   114
		 * more than once, the file will not actually be removed from memory 
dvander@949
   115
		 * until it is closed once for each call to LoadGameConfigfile().
dvander@547
   116
		 *
dvander@547
   117
		 * @param cfg		Pointer to the IGameConfig to close.
dvander@547
   118
		 */
dvander@547
   119
		virtual void CloseGameConfigFile(IGameConfig *cfg) =0;
dvander@949
   120
dvander@949
   121
		/**
dvander@949
   122
		 * @brief Reads an GameConfig Handle.
dvander@949
   123
		 *
dvander@949
   124
		 * @param hndl		Handle to read.
dvander@949
   125
		 * @param ident		Identity of the owner (can be NULL).
dvander@949
   126
		 * @param err		Optional error buffer.
dvander@949
   127
		 * @return			IGameConfig pointer on success, NULL otherwise.
dvander@949
   128
		 */
dvander@949
   129
		virtual IGameConfig *ReadHandle(Handle_t hndl,
dvander@949
   130
			IdentityToken_t *ident,
dvander@949
   131
			HandleError *err) =0;										
dvander@547
   132
	};
dvander@547
   133
}
dvander@547
   134
dvander@547
   135
#endif //_INCLUDE_SOURCEMOD_GAMECONFIG_SYSTEM_H_