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
16
17namespace galaxy
18{
22 struct Settings
23 {
24 public:
28 static auto set_config_to_default() -> void;
29
33 static auto set_settings_from_config() -> void;
34
40 [[nodiscard]]
41 static auto window_width() noexcept -> int;
42
48 [[nodiscard]]
49 static auto window_height() noexcept -> int;
50
56 [[nodiscard]]
57 static auto window_icon() noexcept -> const std::string&;
58
64 [[nodiscard]]
65 static auto fullscreen() noexcept -> bool;
66
74 [[nodiscard]]
75 static auto maximized() noexcept -> bool;
76
82 [[nodiscard]]
83 static auto vsync() noexcept -> bool;
84
90 [[nodiscard]]
91 static auto window_resizable() noexcept -> bool;
92
98 [[nodiscard]]
99 static auto window_border() noexcept -> bool;
100
106 [[nodiscard]]
107 static auto mouse_grabbed() noexcept -> bool;
108
114 [[nodiscard]]
115 static auto cursor_show() noexcept -> bool;
116
122 [[nodiscard]]
123 static auto cursor_icon() noexcept -> const std::string&;
124
130 [[nodiscard]]
131 static auto cursor_hotspot() noexcept -> const glm::ivec2&;
132
138 [[nodiscard]]
139 static auto audio_freq() noexcept -> int;
140
146 [[nodiscard]]
147 static auto ansiotrophy() noexcept -> int;
148
154 [[nodiscard]]
155 static auto mipmap() noexcept -> bool;
156
162 [[nodiscard]]
163 static auto texture_filter() noexcept -> GLTextureFilter;
164
170 [[nodiscard]]
171 static auto title() noexcept -> const std::string&;
172
178 [[nodiscard]]
179 static auto version() noexcept -> const std::string&;
180
186 [[nodiscard]]
187 static auto identifier() noexcept -> const std::string&;
188
194 [[nodiscard]]
195 static auto creator() noexcept -> const std::string&;
196
202 [[nodiscard]]
203 static auto copyright() noexcept -> const std::string&;
204
210 [[nodiscard]]
211 static auto website() noexcept -> const std::string&;
212
218 [[nodiscard]]
219 static auto log_dir() noexcept -> const std::string&;
220
226 [[nodiscard]]
227 static auto root_dir() noexcept -> std::filesystem::path;
228
234 [[nodiscard]]
235 static auto assets_dir() noexcept -> std::filesystem::path;
236
242 [[nodiscard]]
243 static auto editor_dir() noexcept -> std::filesystem::path;
244
250 [[nodiscard]]
251 static auto asset_pack() noexcept -> const std::string&;
252
258 [[nodiscard]]
259 static auto use_loose_assets() noexcept -> bool;
260
266 [[nodiscard]]
267 static auto assets_dir_music() noexcept -> const std::string&;
268
274 [[nodiscard]]
275 static auto assets_dir_sfx() noexcept -> const std::string&;
276
282 [[nodiscard]]
283 static auto assets_dir_voice() noexcept -> const std::string&;
284
290 [[nodiscard]]
291 static auto assets_dir_font() noexcept -> const std::string&;
292
298 [[nodiscard]]
299 static auto assets_dir_script() noexcept -> const std::string&;
300
306 [[nodiscard]]
307 static auto assets_dir_shaders() noexcept -> const std::string&;
308
314 [[nodiscard]]
315 static auto assets_dir_animation() noexcept -> const std::string&;
316
322 [[nodiscard]]
323 static auto assets_dir_texture() noexcept -> const std::string&;
324
330 [[nodiscard]]
331 static auto assets_dir_prefabs() noexcept -> const std::string&;
332
338 [[nodiscard]]
339 static auto assets_dir_maps() noexcept -> const std::string&;
340
346 [[nodiscard]]
347 static auto assets_dir_video() noexcept -> const std::string&;
348
354 [[nodiscard]]
355 static auto assets_dir_ui() noexcept -> const std::string&;
356
357 private:
358 inline static int s_window_width;
359 inline static int s_window_height;
360 inline static std::string s_window_icon;
361 inline static bool s_fullscreen;
362 inline static bool s_maximized;
363 inline static bool s_vsync;
364 inline static bool s_resizable;
365 inline static bool s_border;
366
367 inline static bool s_mouse_grabbed;
368 inline static bool s_cursor_show;
369 inline static std::string s_cursor_icon;
370 inline static glm::ivec2 s_cursor_hotspot;
371
372 inline static int s_audio_freq;
373
374 inline static int s_ansio;
375 inline static bool s_mipmap;
377
378 inline static std::string s_title;
379 inline static std::string s_version;
380 inline static std::string s_identifier;
381 inline static std::string s_creator;
382 inline static std::string s_copyright;
383 inline static std::string s_website;
384
385 inline static std::filesystem::path s_assets_dir;
386 inline static std::filesystem::path s_editor_dir;
387 inline static std::string s_asset_pack;
388 inline static bool s_use_loose_assets;
389 inline static std::string s_assets_music;
390 inline static std::string s_assets_sfx;
391 inline static std::string s_assets_voice;
392 inline static std::string s_assets_font;
393 inline static std::string s_assets_script;
394 inline static std::string s_assets_shaders;
395 inline static std::string s_assets_animation;
396 inline static std::string s_assets_texture;
397 inline static std::string s_assets_prefabs;
398 inline static std::string s_assets_maps;
399 inline static std::string s_assets_video;
400 inline static std::string s_assets_ui;
401 };
402} // namespace galaxy
403
404/*
405// config.restore<int>("flag_bitset_count", 8, "misc");
406
407// config.restore<float>("world_to_box2d", 0.01f, "physics");
408// config.restore<float>("box2d_to_world", 100.0f, "physics");
409// config.restore<int>("flag_bitset_count", 8, "misc");
410
411// config.restore<float>("world_to_box2d", 0.01f, "physics");
412// config.restore<float>("box2d_to_world", 100.0f, "physics");
413
414// config.restore<int>("ansiotrophic_filtering", 16, "window");
415// config.restore<bool>("highdpi", false, "window");
416// s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
417
418// s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
419// s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
420// s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
421// s_highdpi = config.get<bool>("highdpi", "window");
425//[[nodiscard]]
426// static auto flag_bitset_count() noexcept -> int;
427
431//[[nodiscard]]
432// static auto world_to_box2d() noexcept -> float;
433
437//[[nodiscard]]
438// static auto box2d_to_world() noexcept -> float;
439
440
441
445//[[nodiscard]]
446// static auto highdpi() noexcept -> bool;
447
448// inline static int s_flag_bitset_count;
449
450// inline static float s_world_to_box2d;
451// inline static float s_box2d_to_world;
452
453// inline static bool s_highdpi;
454
455config.restore<float>("ui_font_size", 14.0f);
456config.restore<std::string>("default_lang", "en_au");
457
458config.restore<float>("sfx_volume", 1.0f, "audio");
459config.restore<float>("music_volume", 1.0f, "audio");
460config.restore<float>("dialogue_volume", 1.0f, "audio");
461config.restore<int>("listener_count", 1, "audio");
462
463
464config.restore<bool>("smaa", false, "graphics.effects");
465config.restore<bool>("sharpen", false, "graphics.effects");
466config.restore<bool>("gamma_correction", false, "graphics.effects");
467config.restore<bool>("chromatic_abberation", false, "graphics.effects");
468config.restore<bool>("gaussian_blur", false, "graphics.effects");
469config.restore<bool>("film_grain", false, "graphics.effects");
470
471config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
472config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
473config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
474config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
475config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
476config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
477
481// #define GALAXY_ENTITY_SIZE std::uint64_t
482*/
483
484#endif
Animated.cpp galaxy.
Definition Animated.cpp:16
GLTextureFilter
Mipmap filtering.
Definition Enums.hpp:54
Helper class to encapsulate our global settings we want to quickly access across app.
Definition Settings.hpp:23
static bool s_vsync
Definition Settings.hpp:363
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:137
static std::string s_asset_pack
Definition Settings.hpp:387
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:243
static std::string s_title
Definition Settings.hpp:378
static std::string s_assets_video
Definition Settings.hpp:399
static std::string s_assets_prefabs
Definition Settings.hpp:397
static std::string s_assets_music
Definition Settings.hpp:389
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:132
static auto log_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:237
static auto ansiotrophy() noexcept -> int
Ansiotropic filtering level.
Definition Settings.cpp:192
static auto fullscreen() noexcept -> bool
Is window started fullscreen.
Definition Settings.cpp:142
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:308
static auto copyright() noexcept -> const std::string &
Copyright message.
Definition Settings.cpp:227
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:303
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:152
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:278
static std::string s_cursor_icon
Definition Settings.hpp:369
static int s_window_height
Definition Settings.hpp:359
static auto mipmap() noexcept -> bool
Mipmapping.
Definition Settings.cpp:197
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:127
static bool s_use_loose_assets
Definition Settings.hpp:388
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:293
static std::string s_assets_sfx
Definition Settings.hpp:390
static std::string s_copyright
Definition Settings.hpp:382
static auto window_border() noexcept -> bool
Controls if a window has a border around it (including titlebar).
Definition Settings.cpp:162
static std::string s_assets_script
Definition Settings.hpp:393
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:323
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:75
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:263
static std::string s_assets_texture
Definition Settings.hpp:396
static bool s_resizable
Definition Settings.hpp:364
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:298
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:288
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:268
static int s_window_width
Definition Settings.hpp:358
static auto window_resizable() noexcept -> bool
Is the window resizable.
Definition Settings.cpp:157
static auto identifier() noexcept -> const std::string &
Game identifier i.e. com.galaxy.app.
Definition Settings.cpp:217
static bool s_fullscreen
Definition Settings.hpp:361
static auto maximized() noexcept -> bool
Is window started maximized?
Definition Settings.cpp:147
static auto texture_filter() noexcept -> GLTextureFilter
Texture filtering type.
Definition Settings.cpp:202
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:207
static std::string s_creator
Definition Settings.hpp:381
static std::string s_assets_voice
Definition Settings.hpp:391
static int s_ansio
Definition Settings.hpp:374
static auto cursor_show() noexcept -> bool
Is the mouse cursor visible or not.
Definition Settings.cpp:172
static bool s_mouse_grabbed
Definition Settings.hpp:367
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:248
static auto cursor_hotspot() noexcept -> const glm::ivec2 &
Cursor selector point (hotspot).
Definition Settings.cpp:182
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:258
static std::filesystem::path s_assets_dir
Definition Settings.hpp:385
static auto version() noexcept -> const std::string &
Game semver.
Definition Settings.cpp:212
static auto audio_freq() noexcept -> int
Set audio frequency to use with SDL.
Definition Settings.cpp:187
static auto mouse_grabbed() noexcept -> bool
Is the cursor grabbed.
Definition Settings.cpp:167
static std::string s_assets_maps
Definition Settings.hpp:398
static auto website() noexcept -> const std::string &
Website URL.
Definition Settings.cpp:232
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:273
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:313
static bool s_maximized
Definition Settings.hpp:362
static std::string s_assets_shaders
Definition Settings.hpp:394
static bool s_cursor_show
Definition Settings.hpp:368
static GLTextureFilter s_filtering
Definition Settings.hpp:376
static std::string s_assets_animation
Definition Settings.hpp:395
static std::filesystem::path s_editor_dir
Definition Settings.hpp:386
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:392
static std::string s_assets_ui
Definition Settings.hpp:400
static bool s_mipmap
Definition Settings.hpp:375
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:253
static std::string s_website
Definition Settings.hpp:383
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:318
static std::string s_version
Definition Settings.hpp:379
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:177
static bool s_border
Definition Settings.hpp:365
static glm::ivec2 s_cursor_hotspot
Definition Settings.hpp:370
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:283
static auto creator() noexcept -> const std::string &
Owner.
Definition Settings.cpp:222
static int s_audio_freq
Definition Settings.hpp:372
static std::string s_window_icon
Definition Settings.hpp:360
static std::string s_identifier
Definition Settings.hpp:380