2
0
mirror of https://github.com/rehlds/metamod-r.git synced 2024-12-29 08:05:41 +03:00
metamod-r/metamod/src/conf_meta.h

54 lines
1.0 KiB
C
Raw Normal View History

2016-07-26 19:31:47 +03:00
#pragma once
2016-07-26 03:22:47 +03:00
// Max length of line in config file.
#define MAX_CONF_LEN 1024
// Supported config value-types.
2016-07-26 19:31:47 +03:00
enum cf_type_t
{
CF_NONE = 0,
2016-07-26 03:22:47 +03:00
CF_INT,
CF_BOOL,
CF_STR,
CF_PATH,
2016-07-26 19:31:47 +03:00
};
2016-07-26 03:22:47 +03:00
2016-07-26 19:31:47 +03:00
struct option_t
{
2017-05-09 19:31:09 +03:00
char* name; // option name
cf_type_t type; // option type
void* dest; // addr of destination variable, or handler function
char* init; // initial value, as a string, just as config file would
2016-07-26 19:31:47 +03:00
};
2017-01-13 03:00:23 +03:00
class MConfig
{
2016-07-26 19:31:47 +03:00
public:
MConfig();
2017-05-09 19:31:09 +03:00
void init(option_t* global_options);
bool load(const char* filename);
bool set(const char* key, const char* value) const;
2016-07-26 19:31:47 +03:00
void show() const;
void set_directory();
2017-05-09 19:31:09 +03:00
const char* directory() const;
2016-07-26 19:31:47 +03:00
2017-05-09 19:31:09 +03:00
int m_debuglevel; // to use for meta_debug
char* m_gamedll; // string if specified in config.ini
char* m_exec_cfg; // ie exec.cfg
2017-03-11 19:12:09 +03:00
int m_clientmeta;
2017-01-13 03:00:23 +03:00
2016-07-26 19:31:47 +03:00
private:
2017-05-09 19:31:09 +03:00
option_t* m_list;
char* m_filename;
char m_directory[MAX_PATH];
2016-07-26 19:31:47 +03:00
2017-05-09 19:31:09 +03:00
option_t* find(const char* lookup) const;
static bool set(option_t* setp, const char* value);
2016-07-26 03:22:47 +03:00
};
2017-05-09 19:31:09 +03:00
inline const char* MConfig::directory() const
{
return m_directory;
}