public/IGameConfigs.h
author David Anderson <dvander@alliedmods.net>
Fri Jun 08 03:50:23 2007 +0000 (2007-06-08)
changeset 925 2cd3d817b5ab
parent 703 cddbff919185
child 947 04dcaa8312e7
permissions -rw-r--r--
added sm_unban
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@547
    23
dvander@547
    24
/**
faluco@620
    25
 * @file IGameConfigs.h
dvander@547
    26
 * @brief Abstracts game private data configuration.
dvander@547
    27
 */
dvander@547
    28
dvander@547
    29
#define SMINTERFACE_GAMECONFIG_NAME			"IGameConfigManager"
dvander@547
    30
#define SMINTERFACE_GAMECONFIG_VERSION		1
dvander@547
    31
dvander@547
    32
class SendProp;
dvander@547
    33
dvander@547
    34
namespace SourceMod
dvander@547
    35
{
dvander@547
    36
	/**
dvander@547
    37
	 * @brief Describes a game private data config file
dvander@547
    38
	 */
dvander@547
    39
	class IGameConfig
dvander@547
    40
	{
dvander@547
    41
	public:
dvander@547
    42
		/**
dvander@547
    43
		 * @brief Returns an offset value.
dvander@547
    44
		 *
dvander@547
    45
		 * @param key			Key to retrieve from the offset section.
dvander@547
    46
		 * @param value			Pointer to store the offset value in.
dvander@547
    47
		 * @return				True if found, false otherwise.
dvander@547
    48
		 */
dvander@547
    49
		virtual bool GetOffset(const char *key, int *value) =0;
dvander@547
    50
dvander@547
    51
		/**
dvander@548
    52
		 * @brief Returns information about a dynamic offset.
dvander@547
    53
		 *
dvander@547
    54
		 * @param key			Key to retrieve from the property section.
faluco@703
    55
		 * @return				A SendProp pointer, or NULL if not found.
dvander@547
    56
		 */
dvander@547
    57
		virtual SendProp *GetSendProp(const char *key) =0;
dvander@548
    58
dvander@548
    59
		/**
dvander@548
    60
		 * @brief Returns the value of a key from the "Keys" section.
dvander@548
    61
		 *
dvander@548
    62
		 * @param key			Key to retrieve from the Keys section.
dvander@548
    63
		 * @return				String containing the value, or NULL if not found.
dvander@548
    64
		 */
dvander@548
    65
		virtual const char *GetKeyValue(const char *key) =0;
dvander@547
    66
	};
dvander@547
    67
dvander@547
    68
	/**
dvander@547
    69
	 * @brief Manages game config files
dvander@547
    70
	 */
dvander@547
    71
	class IGameConfigManager : public SMInterface
dvander@547
    72
	{
dvander@547
    73
	public:
dvander@547
    74
		const char *GetInterfaceName()
dvander@547
    75
		{
dvander@547
    76
			return SMINTERFACE_GAMECONFIG_NAME;
dvander@547
    77
		}
dvander@547
    78
		unsigned int GetInterfaceVersion()
dvander@547
    79
		{
dvander@547
    80
			return SMINTERFACE_GAMECONFIG_VERSION;
dvander@547
    81
		}
dvander@547
    82
	public:
dvander@547
    83
		/**
dvander@547
    84
		 * @brief Loads or finds an already loaded game config file.  
dvander@547
    85
		 *
dvander@547
    86
		 * @param file		File to load.  The path must be relative to the 'gamedata'
faluco@703
    87
		 *					folder under the config folder, and the extension should be omitted.
dvander@547
    88
		 * @param pConfig	Pointer to store the game config pointer.  Pointer will be valid even on failure.
dvander@547
    89
		 * @param error		Optional error message buffer.
dvander@547
    90
		 * @param maxlength	Maximum length of the error buffer.
dvander@547
    91
		 * @return			True on success, false if the file failed.
dvander@547
    92
		 */
dvander@547
    93
		virtual bool LoadGameConfigFile(const char *file, IGameConfig **pConfig, char *error, size_t maxlength) =0;
dvander@547
    94
dvander@547
    95
		/**
dvander@547
    96
		 * @brief Closes an IGameConfig pointer.  Since a file can be loaded more than once,
dvander@547
    97
		 * the file will not actually be removed from memory until it is closed once for each
dvander@547
    98
		 * call to LoadGameConfigfile().
dvander@547
    99
		 *
dvander@547
   100
		 * @param cfg		Pointer to the IGameConfig to close.
dvander@547
   101
		 */
dvander@547
   102
		virtual void CloseGameConfigFile(IGameConfig *cfg) =0;
dvander@547
   103
	};
dvander@547
   104
}
dvander@547
   105
dvander@547
   106
#endif //_INCLUDE_SOURCEMOD_GAMECONFIG_SYSTEM_H_