galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Settings.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_CORE_SETTINGS_HPP_
9#define GALAXY_CORE_SETTINGS_HPP_
10
11#include <filesystem>
12
13#include <glm/vec2.hpp>
14
15namespace galaxy
16{
20 struct Settings
21 {
22 public:
26 static auto set_config_to_default() -> void;
27
31 static auto set_settings_from_config() -> void;
32
38 [[nodiscard]]
39 static auto vsync() noexcept -> bool;
40
46 [[nodiscard]]
47 static auto audio_freq() noexcept -> int;
48
54 [[nodiscard]]
55 static auto title() noexcept -> const std::string&;
56
62 [[nodiscard]]
63 static auto version() noexcept -> const std::string&;
64
70 [[nodiscard]]
71 static auto identifier() noexcept -> const std::string&;
72
78 [[nodiscard]]
79 static auto creator() noexcept -> const std::string&;
80
86 [[nodiscard]]
87 static auto copyright() noexcept -> const std::string&;
88
94 [[nodiscard]]
95 static auto website() noexcept -> const std::string&;
96
102 [[nodiscard]]
103 static auto logs_dir() noexcept -> const std::string&;
104
110 [[nodiscard]]
111 static auto root_dir() noexcept -> std::filesystem::path;
112
118 [[nodiscard]]
119 static auto assets_dir() noexcept -> std::filesystem::path;
120
126 [[nodiscard]]
127 static auto editor_dir() noexcept -> std::filesystem::path;
128
134 [[nodiscard]]
135 static auto asset_pack() noexcept -> const std::string&;
136
142 [[nodiscard]]
143 static auto use_loose_assets() noexcept -> bool;
144
150 [[nodiscard]]
151 static auto assets_dir_music() noexcept -> const std::string&;
152
158 [[nodiscard]]
159 static auto assets_dir_sfx() noexcept -> const std::string&;
160
166 [[nodiscard]]
167 static auto assets_dir_voice() noexcept -> const std::string&;
168
174 [[nodiscard]]
175 static auto assets_dir_font() noexcept -> const std::string&;
176
182 [[nodiscard]]
183 static auto assets_dir_script() noexcept -> const std::string&;
184
190 [[nodiscard]]
191 static auto assets_dir_shaders() noexcept -> const std::string&;
192
198 [[nodiscard]]
199 static auto assets_dir_animation() noexcept -> const std::string&;
200
206 [[nodiscard]]
207 static auto assets_dir_texture() noexcept -> const std::string&;
208
214 [[nodiscard]]
215 static auto assets_dir_prefabs() noexcept -> const std::string&;
216
222 [[nodiscard]]
223 static auto assets_dir_maps() noexcept -> const std::string&;
224
230 [[nodiscard]]
231 static auto assets_dir_video() noexcept -> const std::string&;
232
238 [[nodiscard]]
239 static auto assets_dir_ui() noexcept -> const std::string&;
240
241 private:
242 inline static bool s_vsync;
243 inline static int s_audio_freq;
244
245 inline static std::string s_title;
246 inline static std::string s_version;
247 inline static std::string s_identifier;
248 inline static std::string s_creator;
249 inline static std::string s_copyright;
250 inline static std::string s_website;
251
252 inline static std::string s_logs_dir;
253 inline static std::filesystem::path s_assets_dir;
254 inline static std::filesystem::path s_editor_dir;
255 inline static std::string s_asset_pack;
256 inline static bool s_use_loose_assets;
257 inline static std::string s_assets_music;
258 inline static std::string s_assets_sfx;
259 inline static std::string s_assets_voice;
260 inline static std::string s_assets_font;
261 inline static std::string s_assets_script;
262 inline static std::string s_assets_shaders;
263 inline static std::string s_assets_animation;
264 inline static std::string s_assets_texture;
265 inline static std::string s_assets_prefabs;
266 inline static std::string s_assets_maps;
267 inline static std::string s_assets_video;
268 inline static std::string s_assets_ui;
269 };
270} // namespace galaxy
271
272/*
273* ///
278 [[nodiscard]]
279 static auto window_width() noexcept -> int;
280
286 [[nodiscard]]
287 static auto window_height() noexcept -> int;
288
294 [[nodiscard]]
295 static auto window_icon() noexcept -> const std::string&;
296
302 [[nodiscard]]
303 static auto fullscreen() noexcept -> bool;
304
312 [[nodiscard]]
313 static auto maximized() noexcept -> bool;
314
315
316
322 [[nodiscard]]
323 static auto window_resizable() noexcept -> bool;
324
330 [[nodiscard]]
331 static auto window_border() noexcept -> bool;
332
338 [[nodiscard]]
339 static auto mouse_grabbed() noexcept -> bool;
340
346 [[nodiscard]]
347 static auto cursor_show() noexcept -> bool;
348
354 [[nodiscard]]
355 static auto cursor_icon() noexcept -> const std::string&;
356
362 [[nodiscard]]
363 static auto cursor_hotspot() noexcept -> const glm::ivec2&;
364
365
371 [[nodiscard]]
372 static auto ansiotrophy() noexcept -> int;
373
379 [[nodiscard]]
380 static auto mipmap() noexcept -> bool;
381
387 [[nodiscard]]
388 static auto texture_filter() noexcept -> GLTextureFilter;
389
395 [[nodiscard]]
396 static auto max_quads() noexcept -> int;
397
398
399
400
401
402 inline static int s_window_width;
403 inline static int s_window_height;
404 inline static std::string s_window_icon;
405 inline static bool s_fullscreen;
406 inline static bool s_maximized;
407 inline static bool s_resizable;
408 inline static bool s_border;
409
410 inline static bool s_mouse_grabbed;
411 inline static bool s_cursor_show;
412 inline static std::string s_cursor_icon;
413 inline static glm::ivec2 s_cursor_hotspot;
414
415
416
417 inline static int s_ansio;
418 inline static bool s_mipmap;
419 inline static GLTextureFilter s_filtering;
420 inline static int s_max_quads;
421
422
423
424// config.restore<int>("flag_bitset_count", 8, "misc");
425
426// config.restore<float>("world_to_box2d", 0.01f, "physics");
427// config.restore<float>("box2d_to_world", 100.0f, "physics");
428// config.restore<int>("flag_bitset_count", 8, "misc");
429
430// config.restore<float>("world_to_box2d", 0.01f, "physics");
431// config.restore<float>("box2d_to_world", 100.0f, "physics");
432
433// config.restore<int>("ansiotrophic_filtering", 16, "window");
434// config.restore<bool>("highdpi", false, "window");
435// s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
436config.restore<int>("window_width", 1920, "window");
437config.restore<int>("window_height", 1080, "window");
438config.restore<int>("frame_width", 640, "window");
439config.restore<int>("frame_height", 360, "window");
440
441// s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
442// s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
443// s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
444// s_highdpi = config.get<bool>("highdpi", "window");
448//[[nodiscard]]
449// static auto flag_bitset_count() noexcept -> int;
450
454//[[nodiscard]]
455// static auto world_to_box2d() noexcept -> float;
456
460//[[nodiscard]]
461// static auto box2d_to_world() noexcept -> float;
462
463
464
468//[[nodiscard]]
469// static auto highdpi() noexcept -> bool;
470
471// inline static int s_flag_bitset_count;
472
473// inline static float s_world_to_box2d;
474// inline static float s_box2d_to_world;
475
476// inline static bool s_highdpi;
477
478config.restore<float>("ui_font_size", 14.0f);
479config.restore<std::string>("default_lang", "en_au");
480
481config.restore<float>("sfx_volume", 1.0f, "audio");
482config.restore<float>("music_volume", 1.0f, "audio");
483config.restore<float>("dialogue_volume", 1.0f, "audio");
484config.restore<int>("listener_count", 1, "audio");
485
486
487config.restore<bool>("smaa", false, "graphics.effects");
488config.restore<bool>("sharpen", false, "graphics.effects");
489config.restore<bool>("gamma_correction", false, "graphics.effects");
490config.restore<bool>("chromatic_abberation", false, "graphics.effects");
491config.restore<bool>("gaussian_blur", false, "graphics.effects");
492config.restore<bool>("film_grain", false, "graphics.effects");
493
494config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
495config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
496config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
497config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
498config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
499config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
500
504// #define GALAXY_ENTITY_SIZE std::uint64_t
505*/
506
507#endif
Application.hpp galaxy.
Helper class to encapsulate our global settings we want to quickly access across app.
Definition Settings.hpp:21
static bool s_vsync
Definition Settings.hpp:242
static std::string s_asset_pack
Definition Settings.hpp:255
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:176
static std::string s_title
Definition Settings.hpp:245
static std::string s_assets_video
Definition Settings.hpp:267
static std::string s_assets_prefabs
Definition Settings.hpp:265
static std::string s_assets_music
Definition Settings.hpp:257
static auto logs_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:171
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:241
static std::string s_logs_dir
Definition Settings.hpp:252
static auto copyright() noexcept -> const std::string &
Copyright message.
Definition Settings.cpp:161
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:236
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:131
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:211
static bool s_use_loose_assets
Definition Settings.hpp:256
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:226
static std::string s_assets_sfx
Definition Settings.hpp:258
static std::string s_copyright
Definition Settings.hpp:249
static std::string s_assets_script
Definition Settings.hpp:261
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:256
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:77
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:196
static std::string s_assets_texture
Definition Settings.hpp:264
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:231
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:221
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:201
static auto identifier() noexcept -> const std::string &
Game identifier i.e. com.galaxy.app.
Definition Settings.cpp:151
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:141
static std::string s_creator
Definition Settings.hpp:248
static std::string s_assets_voice
Definition Settings.hpp:259
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:181
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:191
static std::filesystem::path s_assets_dir
Definition Settings.hpp:253
static auto version() noexcept -> const std::string &
Game semver.
Definition Settings.cpp:146
static auto audio_freq() noexcept -> int
Set audio frequency to use with SDL.
Definition Settings.cpp:136
static std::string s_assets_maps
Definition Settings.hpp:266
static auto website() noexcept -> const std::string &
Website URL.
Definition Settings.cpp:166
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:206
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:246
static std::string s_assets_shaders
Definition Settings.hpp:262
static std::string s_assets_animation
Definition Settings.hpp:263
static std::filesystem::path s_editor_dir
Definition Settings.hpp:254
static auto set_config_to_default() -> void
Restore all config settings to default.
Definition Settings.cpp:23
static std::string s_assets_font
Definition Settings.hpp:260
static std::string s_assets_ui
Definition Settings.hpp:268
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:186
static std::string s_website
Definition Settings.hpp:250
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:251
static std::string s_version
Definition Settings.hpp:246
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:216
static auto creator() noexcept -> const std::string &
Owner.
Definition Settings.cpp:156
static int s_audio_freq
Definition Settings.hpp:243
static std::string s_identifier
Definition Settings.hpp:247