Elaztek Developer Hub
Blamite Game Engine - blam!  00423.10.27.24.0533.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 
7 #include <Strings/components/settings/config/config.h>
8 
11 
12 #define CONFIG_VER "1"
13 #define CONFIG_COMMENT_DELIMETER "#"
14 #define CONFIG_DEFAULT_NAME "engine.cfg"
15 #define CONFIG_COLOR_NAME "console_colors.cfg"
16 
17 
20 #define ENGINE_CFG Blam::Settings::Config::GetEngineConfiguration()
21 
27 #define ENGINE_CFG_SECTION(section_name) Blam::Settings::Config::GetEngineConfiguration()->GetConfigurationSection(section_name)
28 
34 #define ENGINE_DATA_PATH(path) Blam::Settings::Paths::GetEngineDataPath(path)
35 
41 #define USER_DATA_PATH(path) Blam::Settings::Paths::GetUserDataPath(path)
42 
43 #ifndef BLAM
44 #define BLAM
45 #endif
46 
58 {
59  DataRoot,
60  Content,
61  Gallery,
62  Maps,
63  Fonts,
64  Tags,
65  Extensions,
66  Resources,
68  Plugins,
69  Movies,
70 };
71 
86 {
87  DataRoot,
88  Tags,
89  Maps,
90  Mods,
91  Extensions,
92  Plugins,
93  Screenshots,
94  Reports,
95  LogArchives,
96  Cache
97 };
98 /*
99 class BlamEngineConfig
100 {
101  struct paths_data
102  {
103  std::string game_data_root = ".";
104  std::string user_mods_dir = "/mods/";
105  std::string raw_data_dir = "/content/";
106  std::string raw_data_images_dir = "/content/Gallery/";
107  std::string screenshots_dir = "/screenshots/";
108  std::string levels_dir = "/maps/";
109  std::string fonts_dir = "/maps/fonts/";
110  std::string tags_dir = "/tags/";
111  std::string plugins_dir = "/plugins/";
112  std::string builtin_plugins_dir = "./plugins/";
113  std::string engine_resource_dir = "/data/";
114  };
115 
116  paths_data paths = paths_data();
117 
118  struct resources_data
119  {
120  bool force_regenerate_game_engine_text = true;
121  bool force_regenerate_globals = true;
122  };
123 
124  resources_data resources = resources_data();
125 
126  struct logging_data
127  {
128  bool clear_log_first = true;
129  bool enable_multi_log = true;
130  bool enable_timestamped_log = true;
131  std::string log_format = "html";
132  std::string multi_log_dir = "/logs/";
133  std::string timestamped_log_dir = "/logs/";
134  std::string reports_dir = "/reports/";
135  bool use_reports = true;
136  bool stylized_html_logs = true;
137  std::string console_color_set = "new";
138  bool show_header_in_stylized_reports = true;
139  bool include_extras_in_stylized_reports = false;
140  bool bypass_queue = true;
141  int max_errors_before_supression = 5;
142  };
143 
144  logging_data logging = logging_data();
145 
146  struct imgui_data
147  {
148  std::string sys_font = "font_package_dbg";
149  bool sys_font_force_extension = true;
150  float sys_font_size = 15.0f;
151  bool allow_imgui_mouse_change = false;
152  };
153 
154  imgui_data imgui = imgui_data();
155 
156  struct debug_data
157  {
158  bool screenshot_debug = false;
159  bool debugMode = true;
160  bool config_colors_debug = true;
161  bool disable_tag_class_version_checking = false;
162  bool disable_tag_field_type_version_checking = false;
163  };
164 
165  debug_data debug = debug_data();
166 
167  struct debug_ui_data
168  {
169  std::string ui_default_font = "fixedsys";
170  bool always_generate_menubar_file = true;
171  };
172 
173  debug_ui_data debug_ui = debug_ui_data();
174 
175  struct rendering_data
176  {
177  std::string rendering_engine = "ogre";
178  int debug_thread_count = 1;
179  };
180 
181  rendering_data rendering = rendering_data();
182 
183  struct sentry_data
184  {
185  bool enable_sentry = false;
186  std::string sentry_host = "http://[email protected]:9000/2";
187  };
188 
189  sentry_data sentry = sentry_data();
190 
191  struct fonts_data
192  {
193  bool use_font_table = true;
194  bool draw_shadow_separately = true;
195  };
196 
197  fonts_data fonts = fonts_data();
198 
199  struct console_data
200  {
201  bool extraConsoleOutputPadding = true;
202  bool useEnhancedBooleanCommands = false;
203  bool useEnhancedGvarMessages = true;
204  };
205 
206  console_data console = console_data();
207 
208  struct debug_menu_data
209  {
210  bool useAlternateDebugMenuUnknownGlobalDisplay = false;
211  bool autoGenerateNewDebugMenuFile = true;
212  };
213 
214  debug_menu_data debug_menu = debug_menu_data();
215 
216  struct features_data
217  {
218  bool show_firstboot = true;
219  bool show_windows_menubar = false;
220  bool use_custom_cursor = true;
221  bool enable_imgui_gamepad_nav = false;
222  };
223 
224  features_data features = features_data();
225 
226  struct network_data
227  {
228  bool use_netcode = true;
229  bool enable_discord_rpc = true;
230  };
231 
232  network_data network = network_data();
233 
234  struct threading_data
235  {
236  bool use_separate_render_thread = false;
237  };
238 
239  threading_data threading = threading_data();
240 
241  struct appearance_data
242  {
243  bool use_themed_windows = true;
244  bool use_themed_controls = false;
245  bool use_win32_dialogs = false;
246  bool use_classic_qt_dialogs = false;
247  float default_scale_factor = 1.0f;
248  std::string default_color_scheme = "elaztek_blue";
249  std::string default_metrics = "auto";
250  };
251 
252  appearance_data appearance = appearance_data();
253 
254  struct miscellaneous_data
255  {
256  std::string screenshot_format = "PNG";
257  };
258 
259  miscellaneous_data miscellaneous = miscellaneous_data();
260 
261  struct rendering_ogre_data
262  {
263  std::string rendering_system = "directx11";
264  int color_depth = 32;
265  bool srgb_gamma_conversion = false;
266  std::string resolution = "640x480";
267  bool fullscreen = false;
268  bool vsync = false;
269  int vsync_interval = 1;
270  int fsaa = 1;
271  bool allow_nvperfhud = false;
272  bool reverse_depth = false;
273  bool msaa = false;
274  int msaa_quality = 0;
275  };
276 
277  rendering_ogre_data rendering_ogre = rendering_ogre_data();
278 
279  struct rendering_dx11_data
280  {
281  std::string backbuffer_count = "auto";
282  std::string driver_type = "hardware";
283  bool fast_shaders = true;
284  std::string floating_point_mode = "fastest";
285  std::string info_queue_exceptions_bottom_level = "none";
286  std::string max_feature_level = "11.0";
287  std::string min_feature_level = "9.1";
288  std::string device = "default";
289  std::string vendor_extensions = "auto";
290  };
291 
292  rendering_dx11_data rendering_dx11 = rendering_dx11_data();
293 
294  struct rendering_opengl_data
295  {
296  std::string display_frequency = "none";
297  std::string render_to_texture_preferred_mode = "fbo";
298  };
299 
300  rendering_opengl_data rendering_opengl = rendering_opengl_data();
301 
302  struct rendering_vulkan_data
303  {
304  std::string display_frequency = "none";
305  std::string vsync_method = "fifo";
306  };
307 
308  rendering_vulkan_data rendering_vulkan = rendering_vulkan_data();
309 
310  struct special_data
311  {
312  int conf_ver = 1;
313  };
314 
315  special_data special = special_data();
316 };*/
317 
321 namespace Blam::Settings
322 {
326  namespace Config
327  {
333  BLAM BlamResult LoadEngineConfiguration();
334 
342  BLAM BlamResult LoadConfiguration(std::string filename);
343 
352  BLAM BlamResult LoadConfiguration(std::string filename, std::string defaults_filename);
353 
360  BLAM BlamConfigurationFile* GetEngineConfiguration();
361 
371  BLAM BlamConfigurationFile* GetConfiguration(std::string filename);
372 
379 
388  BLAM bool IsConfigurationAvailable(std::string filename);
389 
395  BLAM std::map<std::string, BlamConfigurationFile*>* GetConfigurationFiles();
396  }
397 
401  namespace Paths
402  {
412 
421  BLAM std::string GetDefaultUserDataPath(BlamUserDataFolder folder);
422 
430  BLAM std::string GetEngineDataPath(BlamEngineDataFolder folder);
431 
439  BLAM std::string GetUserDataPath(BlamUserDataFolder folder);
440 
450 
460 
484  BLAM std::string ParseFolderPlaceholders(std::string string);
485  }
486 }
BlamUserDataFolder::Screenshots
@ Screenshots
Directory used to store engine screenshots. Defaults to {DataRoot}/screenshots/.
Blam::Settings::Config::GetEngineConfiguration
BLAM BlamConfigurationFile * GetEngineConfiguration()
Retrieves the main engine configuration file.
Definition: config.cpp:60
BlamUserDataFolder::Mods
@ Mods
Directory storing user-created mod packages. Defaults to {DataRoot}/mods/.
BlamContentSource::Cache
@ Cache
The engine will load all content from cache files.
Blam::Settings::Paths::GetUserDataFolderFromString
BLAM BlamUserDataFolder GetUserDataFolderFromString(std::string folder)
Attempts to convert a string to the equivalent user data folder.
Definition: paths.cpp:350
BlamUserDataFolder::Reports
@ Reports
Directory used to store the latest report (log) files. Defaults to {DataRoot}/reports/.
Blam::Settings::Paths::GetDefaultEngineDataPath
BLAM std::string GetDefaultEngineDataPath(BlamEngineDataFolder folder)
Retrieves a default value of a given engine data directory.
Definition: paths.cpp:139
Blam::Logger::LogEvent
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:130
BlamEngineDataFolder::DataRoot
@ DataRoot
The root of all game engine data. Defaults to ./
CONFIG_COMMENT_DELIMETER
#define CONFIG_COMMENT_DELIMETER
The character that indicates a commented-out line.
Definition: config.h:13
logger.h
Blam::Settings::Config::IsConfigurationAvailable
BLAM bool IsConfigurationAvailable(std::string filename)
Checks whether or not a given configuration file is currently available.
Definition: config.cpp:96
USER_DATA_PATH
#define USER_DATA_PATH(path)
Macro to quickly access a user data folder.
Definition: config.h:41
Blam::Settings::Paths::GetEngineDataPath
BLAM std::string GetEngineDataPath(BlamEngineDataFolder folder)
Retrieves the configured value of a given engine directory.
Definition: paths.cpp:211
BlamEngineDataFolder::Fonts
@ Fonts
Directory used for game engine fonts. Defaults to ./maps/fonts/
BlamUserDataFolder::LogArchives
@ LogArchives
Directory used to store previous log archives. Defaults to {DataRoot}/logs/.
Blam::Settings::Config::GetConfiguration
BLAM BlamConfigurationFile * GetConfiguration(std::string filename)
Retrieves a configuration file from a file path.
Definition: config.cpp:72
BlamEngineDataFolder
BlamEngineDataFolder
Enumerator listing all possible engine data folders.
Definition: config.h:57
Blam::Settings::Config::LoadConfiguration
BLAM BlamResult LoadConfiguration(std::string filename)
Loads a configuration file from a file path.
Definition: config.cpp:18
BLAM
#define BLAM
Definition: config.h:44
Blam::Settings::Paths::GetDefaultUserDataPath
BLAM std::string GetDefaultUserDataPath(BlamUserDataFolder folder)
Retrieves a default value of a given user data directory.
Definition: paths.cpp:65
errors.h
BlamContentSource::Tags
@ Tags
The engine will load all content from tags.
BlamEngineDataFolder::Movies
@ Movies
Directory used to store video files, typically played at startup, credits, etc. Defaults to ....
BlamUserDataFolder
BlamUserDataFolder
Enumerator listing all possible user data folders.
Definition: config.h:85
NULL
Add a fourth parameter to bake specific font ranges NULL
Definition: README.txt:57
ENGINE_DATA_PATH
#define ENGINE_DATA_PATH(path)
Macro to quickly access a game engine data folder.
Definition: config.h:34
resource.h
globals.h
Blam::Settings::Paths::ParseFolderPlaceholders
BLAM std::string ParseFolderPlaceholders(std::string string)
Parses any engine/user data folder placeholders within a string.
Definition: paths.cpp:388
Blam::Settings
Namespace containing functions used to access various game engine settings.
Definition: config.h:321
Blam::Settings::Config::GetConfigurationFiles
BLAM std::map< std::string, BlamConfigurationFile * > * GetConfigurationFiles()
Retrieves the map of all loaded configuration files.
Definition: config.cpp:108
BlamEngineDataFolder::Resources
@ Resources
Directory containing other resources and data, usually string tables and globals. Defaults to ....
BlamEngineDataFolder::Extensions
@ Extensions
Directory used for engine extensions. Defaults to ./extensions/
BlamEngineDataFolder::Maps
@ Maps
Directory used for storing built-in cache files. Defaults to ./maps/
BlamEngineDataFolder::DefaultConfigs
@ DefaultConfigs
Directory containing default configuration files. Defaults to ./content/blam/default_configs/
CONFIG_DEFAULT_NAME
#define CONFIG_DEFAULT_NAME
The filename of the default engine configuration.
Definition: config.h:14
Blam::Settings::Config::LoadEngineConfiguration
BLAM BlamResult LoadEngineConfiguration()
Loads the default game engine configuration (engine.cfg).
Definition: config.cpp:13
BlamEngineDataFolder::Plugins
@ Plugins
Directory used to store built-in plugin files for use with the Editing Kit. Defaults to ....
Blam::Settings::Paths::GetUserDataPath
BLAM std::string GetUserDataPath(BlamUserDataFolder folder)
Retrieves the configured value of a given user directory.
Definition: paths.cpp:281
config.h
BlamUserDataFolder::DataRoot
@ DataRoot
The root of all user data. Defaults to BlamStrings::Utils::IO::GetEngineDataRoot().
BlamEngineDataFolder::Gallery
@ Gallery
Directory containing general-purpose images. Defaults to ./content/Gallery/
BlamEngineDataFolder::Content
@ Content
Directory containing general-purpose resources. Defaults to ./content/
Blam::Settings::Config::IsEngineConfigurationAvailable
BLAM bool IsEngineConfigurationAvailable()
Checks whether or not the main engine configuration is currently available.
Definition: config.cpp:84
configuration_files
std::map< std::string, BlamConfigurationFile * > configuration_files
Definition: config.cpp:9
Blam::Settings::Paths::GetEngineDataFolderFromString
BLAM BlamEngineDataFolder GetEngineDataFolderFromString(std::string folder)
Attempts to convert a string to the equivalent engine data folder.
Definition: paths.cpp:369