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#include <SDL3/SDL_scancode.h>
15
16namespace galaxy
17{
21 struct Settings
22 {
23 public:
27 static auto set_config_to_default() -> void;
28
32 static auto set_settings_from_config() -> void;
33
39 [[nodiscard]]
40 static auto requested_width() noexcept -> int;
41
47 [[nodiscard]]
48 static auto requested_height() noexcept -> int;
49
55 [[nodiscard]]
56 static auto virtual_width() noexcept -> int;
57
63 [[nodiscard]]
64 static auto virtual_height() noexcept -> int;
65
71 [[nodiscard]]
72 static auto fullscreen() noexcept -> bool;
73
81 [[nodiscard]]
82 static auto maximized() noexcept -> bool;
83
89 [[nodiscard]]
90 static auto window_resizable() noexcept -> bool;
91
97 [[nodiscard]]
98 static auto mouse_grabbed() noexcept -> bool;
99
105 [[nodiscard]]
106 static auto window_border() noexcept -> bool;
107
113 [[nodiscard]]
114 static auto vsync() noexcept -> bool;
115
121 [[nodiscard]]
122 static auto icon() noexcept -> const std::string&;
123
129 [[nodiscard]]
130 static auto audio_freq() noexcept -> int;
131
137 [[nodiscard]]
138 static auto title() noexcept -> const std::string&;
139
145 [[nodiscard]]
146 static auto version() noexcept -> const std::string&;
147
153 [[nodiscard]]
154 static auto identifier() noexcept -> const std::string&;
155
161 [[nodiscard]]
162 static auto creator() noexcept -> const std::string&;
163
169 [[nodiscard]]
170 static auto copyright() noexcept -> const std::string&;
171
177 [[nodiscard]]
178 static auto website() noexcept -> const std::string&;
179
185 [[nodiscard]]
186 static auto cursor_show() noexcept -> bool;
187
193 [[nodiscard]]
194 static auto cursor_icon() noexcept -> const std::string&;
195
201 [[nodiscard]]
202 static auto cursor_offset() noexcept -> const glm::ivec2&;
203
209 [[nodiscard]]
210 static auto logs_dir() noexcept -> const std::string&;
211
217 [[nodiscard]]
218 static auto base_data() noexcept -> const std::string&;
219
225 [[nodiscard]]
226 static auto root_dir() noexcept -> std::filesystem::path;
227
233 [[nodiscard]]
234 static auto assets_dir() noexcept -> std::filesystem::path;
235
241 [[nodiscard]]
242 static auto asset_pack() noexcept -> const std::string&;
243
249 [[nodiscard]]
250 static auto use_loose_assets() noexcept -> bool;
251
257 [[nodiscard]]
258 static auto assets_dir_music() noexcept -> const std::string&;
259
265 [[nodiscard]]
266 static auto assets_dir_sfx() noexcept -> const std::string&;
267
273 [[nodiscard]]
274 static auto assets_dir_voice() noexcept -> const std::string&;
275
281 [[nodiscard]]
282 static auto assets_dir_font() noexcept -> const std::string&;
283
289 [[nodiscard]]
290 static auto assets_dir_script() noexcept -> const std::string&;
291
297 [[nodiscard]]
298 static auto assets_dir_shaders() noexcept -> const std::string&;
299
305 [[nodiscard]]
306 static auto assets_dir_animation() noexcept -> const std::string&;
307
313 [[nodiscard]]
314 static auto assets_dir_texture() noexcept -> const std::string&;
315
321 [[nodiscard]]
322 static auto assets_dir_prefabs() noexcept -> const std::string&;
323
329 [[nodiscard]]
330 static auto assets_dir_maps() noexcept -> const std::string&;
331
337 [[nodiscard]]
338 static auto assets_dir_video() noexcept -> const std::string&;
339
345 [[nodiscard]]
346 static auto assets_dir_ui() noexcept -> const std::string&;
347
353 [[nodiscard]]
354 static auto enable_editor() noexcept -> bool;
355
361 [[nodiscard]]
362 static auto editor_key() noexcept -> SDL_Scancode;
363
364 private:
365 inline static int s_requested_width;
366 inline static int s_virtual_width;
367 inline static int s_requested_height;
368 inline static int s_virtual_height;
369 inline static bool s_fullscreen;
370 inline static bool s_maximized;
371 inline static bool s_resizable;
372 inline static bool s_mouse_grabbed;
373 inline static bool s_border;
374 inline static bool s_vsync;
375 inline static std::string s_window_icon;
376
377 inline static int s_audio_freq;
378
379 inline static std::string s_title;
380 inline static std::string s_version;
381 inline static std::string s_identifier;
382 inline static std::string s_creator;
383 inline static std::string s_copyright;
384 inline static std::string s_website;
385
386 inline static bool s_cursor_show;
387 inline static std::string s_cursor_icon;
388 inline static glm::ivec2 s_cursor_offset;
389
390 inline static std::string s_logs_dir;
391 inline static std::string s_base_data;
392 inline static std::filesystem::path s_assets_dir;
393 inline static std::string s_asset_pack;
394 inline static bool s_use_loose_assets;
395 inline static std::string s_assets_music;
396 inline static std::string s_assets_sfx;
397 inline static std::string s_assets_voice;
398 inline static std::string s_assets_font;
399 inline static std::string s_assets_script;
400 inline static std::string s_assets_shaders;
401 inline static std::string s_assets_animation;
402 inline static std::string s_assets_texture;
403 inline static std::string s_assets_prefabs;
404 inline static std::string s_assets_maps;
405 inline static std::string s_assets_video;
406 inline static std::string s_assets_ui;
407
408 inline static bool s_enable_editor;
409 inline static int s_editor_key;
410 };
411} // namespace galaxy
412
413/*
419 [[nodiscard]]
420 static auto ansiotrophy() noexcept -> int;
421
427 [[nodiscard]]
428 static auto mipmap() noexcept -> bool;
429
435 [[nodiscard]]
436 static auto texture_filter() noexcept -> GLTextureFilter;
437
443 [[nodiscard]]
444 static auto max_quads() noexcept -> int;
445
446 inline static int s_ansio;
447 inline static bool s_mipmap;
448 inline static GLTextureFilter s_filtering;
449 inline static int s_max_quads;
450
451
452// config.restore<int>("flag_bitset_count", 8, "misc");
453
454// config.restore<float>("world_to_box2d", 0.01f, "physics");
455// config.restore<float>("box2d_to_world", 100.0f, "physics");
456// config.restore<int>("flag_bitset_count", 8, "misc");
457
458// config.restore<float>("world_to_box2d", 0.01f, "physics");
459// config.restore<float>("box2d_to_world", 100.0f, "physics");
460
461// config.restore<int>("ansiotrophic_filtering", 16, "window");
462// config.restore<bool>("highdpi", false, "window");
463// s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
464config.restore<int>("window_width", 1920, "window");
465config.restore<int>("window_height", 1080, "window");
466config.restore<int>("frame_width", 640, "window");
467config.restore<int>("frame_height", 360, "window");
468
469// s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
470// s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
471// s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
472// s_highdpi = config.get<bool>("highdpi", "window");
476//[[nodiscard]]
477// static auto flag_bitset_count() noexcept -> int;
478
482//[[nodiscard]]
483// static auto world_to_box2d() noexcept -> float;
484
488//[[nodiscard]]
489// static auto box2d_to_world() noexcept -> float;
490
491
492
496//[[nodiscard]]
497// static auto highdpi() noexcept -> bool;
498
499// inline static int s_flag_bitset_count;
500
501// inline static float s_world_to_box2d;
502// inline static float s_box2d_to_world;
503
504// inline static bool s_highdpi;
505
506config.restore<float>("ui_font_size", 14.0f);
507config.restore<std::string>("default_lang", "en_au");
508
509config.restore<float>("sfx_volume", 1.0f, "audio");
510config.restore<float>("music_volume", 1.0f, "audio");
511config.restore<float>("dialogue_volume", 1.0f, "audio");
512config.restore<int>("listener_count", 1, "audio");
513
514
515config.restore<bool>("smaa", false, "graphics.effects");
516config.restore<bool>("sharpen", false, "graphics.effects");
517config.restore<bool>("gamma_correction", false, "graphics.effects");
518config.restore<bool>("chromatic_abberation", false, "graphics.effects");
519config.restore<bool>("gaussian_blur", false, "graphics.effects");
520config.restore<bool>("film_grain", false, "graphics.effects");
521
522config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
523config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
524config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
525config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
526config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
527config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
528
532// #define GALAXY_ENTITY_SIZE std::uint64_t
533*/
534
535#endif
Application.hpp galaxy.
Helper class to encapsulate our global settings we want to quickly access across app.
Definition Settings.hpp:22
static bool s_vsync
Definition Settings.hpp:374
static std::string s_asset_pack
Definition Settings.hpp:393
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:258
static std::string s_title
Definition Settings.hpp:379
static std::string s_assets_video
Definition Settings.hpp:405
static std::string s_assets_prefabs
Definition Settings.hpp:403
static std::string s_assets_music
Definition Settings.hpp:395
static int s_virtual_height
Definition Settings.hpp:368
static auto icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:193
static auto fullscreen() noexcept -> bool
Is window started fullscreen.
Definition Settings.cpp:163
static auto logs_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:248
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:318
static std::string s_logs_dir
Definition Settings.hpp:390
static auto copyright() noexcept -> const std::string &
Copyright message.
Definition Settings.cpp:223
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:313
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:188
static auto requested_height() noexcept -> int
Window requested height.
Definition Settings.cpp:148
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:288
static int s_requested_width
Definition Settings.hpp:365
static std::string s_cursor_icon
Definition Settings.hpp:387
static auto editor_key() noexcept -> SDL_Scancode
Editor debug toggle key.
Definition Settings.cpp:343
static bool s_use_loose_assets
Definition Settings.hpp:394
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:303
static std::string s_assets_sfx
Definition Settings.hpp:396
static std::string s_copyright
Definition Settings.hpp:383
static int s_requested_height
Definition Settings.hpp:367
static auto window_border() noexcept -> bool
Controls if a window has a border around it (including titlebar).
Definition Settings.cpp:183
static std::string s_assets_script
Definition Settings.hpp:399
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:333
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:82
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:273
static std::string s_assets_texture
Definition Settings.hpp:402
static bool s_resizable
Definition Settings.hpp:371
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:308
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:298
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:278
static auto window_resizable() noexcept -> bool
Is the window resizable.
Definition Settings.cpp:173
static auto identifier() noexcept -> const std::string &
Game identifier i.e. com.galaxy.app.
Definition Settings.cpp:213
static auto virtual_width() noexcept -> int
Window virtual width.
Definition Settings.cpp:153
static bool s_fullscreen
Definition Settings.hpp:369
static auto cursor_offset() noexcept -> const glm::ivec2 &
Cursor selector point (offset).
Definition Settings.cpp:243
static auto maximized() noexcept -> bool
Is window started maximized?
Definition Settings.cpp:168
static auto virtual_height() noexcept -> int
Window virtual height.
Definition Settings.cpp:158
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:203
static bool s_enable_editor
Definition Settings.hpp:408
static std::string s_creator
Definition Settings.hpp:382
static std::string s_assets_voice
Definition Settings.hpp:397
static auto cursor_show() noexcept -> bool
Is the mouse cursor visible or not.
Definition Settings.cpp:233
static bool s_mouse_grabbed
Definition Settings.hpp:372
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:263
static glm::ivec2 s_cursor_offset
Definition Settings.hpp:388
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:268
static std::filesystem::path s_assets_dir
Definition Settings.hpp:392
static auto version() noexcept -> const std::string &
Game semver.
Definition Settings.cpp:208
static auto audio_freq() noexcept -> int
Set audio frequency to use with SDL.
Definition Settings.cpp:198
static auto mouse_grabbed() noexcept -> bool
Is the cursor grabbed.
Definition Settings.cpp:178
static std::string s_assets_maps
Definition Settings.hpp:404
static auto website() noexcept -> const std::string &
Website URL.
Definition Settings.cpp:228
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:283
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:323
static bool s_maximized
Definition Settings.hpp:370
static std::string s_assets_shaders
Definition Settings.hpp:400
static bool s_cursor_show
Definition Settings.hpp:386
static std::string s_assets_animation
Definition Settings.hpp:401
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:398
static std::string s_assets_ui
Definition Settings.hpp:406
static std::string s_website
Definition Settings.hpp:384
static auto enable_editor() noexcept -> bool
Enable the debug editor UI.
Definition Settings.cpp:338
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:328
static std::string s_version
Definition Settings.hpp:380
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:238
static std::string s_base_data
Definition Settings.hpp:391
static bool s_border
Definition Settings.hpp:373
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:293
static auto creator() noexcept -> const std::string &
Owner.
Definition Settings.cpp:218
static int s_editor_key
Definition Settings.hpp:409
static auto requested_width() noexcept -> int
Window requested width.
Definition Settings.cpp:143
static int s_audio_freq
Definition Settings.hpp:377
static std::string s_window_icon
Definition Settings.hpp:375
static auto base_data() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:253
static int s_virtual_width
Definition Settings.hpp:366
static std::string s_identifier
Definition Settings.hpp:381