Blamite Game Engine - blam!  00285.12.18.20.1411.blamite
The core library for the Blamite Game Engine.
config.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <string>
5 #include <Windows.h>
6 
9 
10 #define CONFIG_VER "1"
11 #define CONFIG_COMMENT_DELIMETER "#"
12 #define CONFIG_DEFAULT_NAME "engine.cfg"
13 #define CONFIG_COLOR_NAME "console_colors.cfg"
14 
15 
20 #define ENGINE_CFG Blam::Config::GetConfig()
21 
22 #ifndef BLAM
23 #define BLAM
24 #endif
25 
30 {
31  String,
32  Boolean,
33  Float,
34  Int,
35  Color,
36  Comment
37 };
38 
43 {
44 private:
45  std::string filename;
46 
47  std::string value_raw;
48 
49  std::string value;
50  bool value_bool;
51  float value_float;
52  int value_int;
53  BlamColor value_color;
54 
55  bool valid;
56 
60  void ParseValue();
61 public:
62  std::string id;
64 
74  BlamConfigurationSetting(std::string line, int line_number, std::string comment_delimeter, std::string _filename);
75 
81  bool IsValid();
82 
88  std::string* AsString();
89 
96  bool* AsBool();
97 
104  float* AsFloat();
105 
112  int* AsInt();
113 
120  BlamColor* AsColor();
121 
125  std::string ConvertRawValueToString();
126 
130  void UpdateValue(std::string new_value);
131 
135  std::string* GetRawValue();
136 
141 };
142 
150 {
151 private:
152  std::string filename;
153 
154 public:
155  std::map<std::string, BlamConfigurationSetting*> settings;
156  std::map<std::string, BlamConfigurationSetting*> default_settings;
157  std::string name;
158 
162  BlamConfigurationSection(std::string _name, std::string _filename);
163 
167  void AddNewSetting(BlamConfigurationSetting* new_setting);
168 
173 
181  bool HasOption(std::string option);
182 
191  std::string* GetString(std::string option);
192 
201  bool* GetBool(std::string option);
202 
211  float* GetFloat(std::string option);
212 
221  int* GetInt(std::string option);
222 
231  BlamColor* GetColor(std::string option);
232 
237 };
238 
240 {
241 private:
242  bool loaded = false;
243 
244 public:
245  std::map<std::string, BlamConfigurationSection*> sections;
246 
247  std::string filename = "";
248  std::string comment_delimeter = "";
249 
256  BlamConfigurationFile(std::string _filename, std::string _comment_delimeter);
257 
265  BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char* resource_type);
266 
272  BlamResult Load();
273 
279  BlamResult Reload();
280 
286  void Save();
287 
293  bool IsLoaded();
294 
299 
307  bool HasConfigurationSection(std::string section_name);
308 
314  BlamConfigurationSection* GetConfigurationSection(std::string section_name);
315 
319  void ExpandFilePlaceholders();
320 };
321 
322 namespace Blam
323 {
329  namespace Settings::Config
330  {
332  BLAM BlamResult LoadConfiguration(std::string filename);
333  BLAM BlamResult LoadConfiguration(std::string filename, int defaults_resource_id);
334  BLAM BlamResult LoadConfiguration(std::string filename, int defaults_resource_id, std::string defaults_resource_type);
335  BLAM BlamResult LoadConfiguration(std::string filename, HMODULE dll_handle, int defaults_resource_id);
336  BLAM BlamResult LoadConfiguration(std::string filename, HMODULE dll_handle, int defaults_resource_id, std::string defaults_resource_type);
337 
339  BLAM BlamConfigurationFile* GetConfiguration(std::string filename);
340 
342  BLAM bool IsConfigurationAvailable(std::string filename);
343 
345 
346  BLAM std::map<std::string, BlamConfigurationFile>* GetConfigurationFiles();
347  }
348 
354  namespace Config
355  {
359  struct ConfigFile
360  {
361  std::string filename;
362 
366  ConfigFile(std::string _filename);
367 
371  std::string GetString(std::string option);
372 
376  bool GetBoolean(std::string option);
377 
381  int GetInt(std::string option);
382 
386  float GetFloat(std::string option);
387  };
388 
393 
397  BLAM ConfigFile* GetConfig(std::string filename);
398  }
399 }
Blam
Namespace surrounding all major engine components.
Definition: blam_api.h:18
BlamConfigurationSetting::AsColor
BlamColor * AsColor()
Retrieves the setting value as a color.
Definition: BlamConfigurationSetting.cpp:238
Blam::Settings::Config::GetEngineConfiguration
BLAM BlamConfigurationFile * GetEngineConfiguration()
Definition: config_new.cpp:58
BlamConfigurationFile::HasConfigurationSection
bool HasConfigurationSection(std::string section_name)
Checks whether or not a given configuration section exists in the file.
Definition: BlamConfigurationFile.cpp:306
BlamConfigurationSection::HasOption
bool HasOption(std::string option)
Checks whether or not a given configuration setting exists in this section.
Definition: BlamConfigurationSection.cpp:38
BlamConfigurationSection
Structure representing a configuration section.
Definition: config.h:149
Blam::Settings::Config::GetConfigurationFiles
BLAM std::map< std::string, BlamConfigurationFile > * GetConfigurationFiles()
Definition: config_new.cpp:116
BlamConfigurationSection::name
std::string name
Definition: config.h:157
BlamConfigurationSettingType::Comment
@ Comment
Blam::Config::ConfigFile::filename
std::string filename
Definition: config.h:361
BlamConfigurationSection::settings
std::map< std::string, BlamConfigurationSetting * > settings
Definition: config.h:155
BlamConfigurationSection::GetInt
int * GetInt(std::string option)
Retrieves a configuration setting as an int.
Definition: BlamConfigurationSection.cpp:114
BlamConfigurationSetting::AsFloat
float * AsFloat()
Retrieves the setting value as a float.
Definition: BlamConfigurationSetting.cpp:212
BlamConfigurationSettingType::Boolean
@ Boolean
BlamConfigurationFile::ExpandFilePlaceholders
void ExpandFilePlaceholders()
Definition: BlamConfigurationFile.cpp:271
Blam::Settings::Config::IsConfigurationAvailable
BLAM bool IsConfigurationAvailable(std::string filename)
Definition: config_new.cpp:94
BlamConfigurationSection::ExpandSectionPlaceholders
void ExpandSectionPlaceholders()
Definition: BlamConfigurationSection.cpp:152
BlamConfigurationFile::LoadDefaults
BlamResult LoadDefaults(HMODULE dll_handle, int resource_id, const char *resource_type)
Load the list of default sections.
Definition: BlamConfigurationFile.cpp:87
BlamConfigurationSettingType::Color
@ Color
Blam::Config::GetConfig
BLAM ConfigFile * GetConfig()
Retrieves the default engine configuration file.
Definition: compat.cpp:5
BlamConfigurationSetting
Class representing a configuration setting.
Definition: config.h:42
BlamConfigurationFile::AddNewSection
void AddNewSection(BlamConfigurationSection *section)
Adds a new configuration section to the file.
Definition: BlamConfigurationFile.cpp:290
BlamConfigurationFile::Load
BlamResult Load()
Loads the configuration file from disk.
Definition: BlamConfigurationFile.cpp:19
BlamConfigurationSection::default_settings
std::map< std::string, BlamConfigurationSetting * > default_settings
Definition: config.h:156
Blam::Settings::Config::GetConfiguration
BLAM BlamConfigurationFile * GetConfiguration(std::string filename)
Definition: config_new.cpp:70
Blam::Config::ConfigFile::GetInt
int GetInt(std::string option)
Definition: compat.cpp:98
BlamConfigurationSection::BlamConfigurationSection
BlamConfigurationSection(std::string _name, std::string _filename)
Definition: BlamConfigurationSection.cpp:5
BlamConfigurationSetting::AsString
std::string * AsString()
Retrieves the setting value as a string.
Definition: BlamConfigurationSetting.cpp:189
Blam::Config::ConfigFile::ConfigFile
ConfigFile(std::string _filename)
Definition: compat.cpp:33
BlamConfigurationFile::sections
std::map< std::string, BlamConfigurationSection * > sections
Definition: config.h:245
BlamConfigurationFile::Save
void Save()
Saves the configuration file back to disk.
Definition: BlamConfigurationFile.cpp:186
BlamConfigurationFile
Definition: config.h:239
Blam::Settings::Config::LoadConfiguration
BLAM BlamResult LoadConfiguration(std::string filename)
Definition: config_new.cpp:13
dll_handle
HMODULE dll_handle
The module handle of the Engine library.
Definition: main.cpp:62
BLAM
#define BLAM
Definition: config.h:23
errors.h
BlamConfigurationSetting::type
BlamConfigurationSettingType type
The type of setting that's being stored.
Definition: config.h:63
BlamConfigurationSetting::ConvertRawValueToString
std::string ConvertRawValueToString()
Definition: BlamConfigurationSetting.cpp:251
globals.h
BlamConfigurationSection::GetColor
BlamColor * GetColor(std::string option)
Retrieves a configuration setting as a color.
Definition: BlamConfigurationSection.cpp:133
BlamConfigurationSetting::AsInt
int * AsInt()
Retrieves the setting value as an int.
Definition: BlamConfigurationSetting.cpp:225
BlamConfigurationSetting::GetRawValue
std::string * GetRawValue()
Definition: BlamConfigurationSetting.cpp:303
BlamConfigurationSection::GetBool
bool * GetBool(std::string option)
Retrieves a configuration setting as a bool.
Definition: BlamConfigurationSection.cpp:76
BlamConfigurationFile::IsLoaded
bool IsLoaded()
Whether or not this configuration file has been loaded.
Definition: BlamConfigurationFile.cpp:285
BlamConfigurationSection::GetFloat
float * GetFloat(std::string option)
Retrieves a configuration setting as a float.
Definition: BlamConfigurationSection.cpp:95
BlamConfigurationSetting::UpdateValue
void UpdateValue(std::string new_value)
Definition: BlamConfigurationSetting.cpp:296
Blam::Settings::Config::ExpandAllPlaceholders
BLAM void ExpandAllPlaceholders()
Definition: config_new.cpp:106
BlamConfigurationSetting::ExpandSettingPlaceholders
void ExpandSettingPlaceholders()
Definition: BlamConfigurationSetting.cpp:308
BlamConfigurationSection::AddNewDefaultSetting
void AddNewDefaultSetting(BlamConfigurationSetting *new_setting)
Definition: BlamConfigurationSection.cpp:25
BlamConfigurationSetting::AsBool
bool * AsBool()
Retrieves the setting value as a bool.
Definition: BlamConfigurationSetting.cpp:199
Blam::Config::ConfigFile::GetBoolean
bool GetBoolean(std::string option)
Definition: compat.cpp:38
BlamConfigurationSection::AddNewSetting
void AddNewSetting(BlamConfigurationSetting *new_setting)
Definition: BlamConfigurationSection.cpp:12
BlamConfigurationFile::filename
std::string filename
Definition: config.h:247
BlamConfigurationFile::GetConfigurationSection
BlamConfigurationSection * GetConfigurationSection(std::string section_name)
Retrieves a configuration section from the configuration file.
Definition: BlamConfigurationFile.cpp:318
BlamConfigurationFile::BlamConfigurationFile
BlamConfigurationFile(std::string _filename, std::string _comment_delimeter)
Prepares a new configuration file to be loaded.
Definition: BlamConfigurationFile.cpp:12
BlamConfigurationSettingType::String
@ String
Blam::Settings::Config::LoadEngineConfiguration
BLAM BlamResult LoadEngineConfiguration()
Definition: config_new.cpp:8
BlamConfigurationSettingType::Float
@ Float
BlamConfigurationSetting::IsValid
bool IsValid()
Whether or not the provided file line was able to be interpreted as a valid setting.
Definition: BlamConfigurationSetting.cpp:184
Blam::Config::ConfigFile::GetString
std::string GetString(std::string option)
Definition: compat.cpp:58
Blam::Config::ConfigFile
Definition: config.h:359
BlamResult
BlamResult
Enumerator containing any and all result codes used throughout the engine.
Definition: errors.h:27
BlamConfigurationSetting::id
std::string id
The name of the setting.
Definition: config.h:62
BlamColor
Structure representing a color.
Definition: globals.h:20
BlamConfigurationSettingType::Int
@ Int
BlamConfigurationSection::GetString
std::string * GetString(std::string option)
Retrieves a configuration setting as a string.
Definition: BlamConfigurationSection.cpp:57
Blam::Settings::Config::IsEngineConfigurationAvailable
BLAM bool IsEngineConfigurationAvailable()
Definition: config_new.cpp:82
BlamConfigurationSetting::BlamConfigurationSetting
BlamConfigurationSetting(std::string line, int line_number, std::string comment_delimeter, std::string _filename)
Prepares a new configuration setting.
Definition: BlamConfigurationSetting.cpp:107
Blam::Config::ConfigFile::GetFloat
float GetFloat(std::string option)
Definition: compat.cpp:78
BlamConfigurationFile::Reload
BlamResult Reload()
Cleans up old data and reloads the configuration file from disk.
Definition: BlamConfigurationFile.cpp:174
BlamConfigurationFile::comment_delimeter
std::string comment_delimeter
Definition: config.h:248
BlamConfigurationSettingType
BlamConfigurationSettingType
Definition: config.h:29