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 max_quads() noexcept -> int;
172
178 [[nodiscard]]
179 static auto title() noexcept -> const std::string&;
180
186 [[nodiscard]]
187 static auto version() noexcept -> const std::string&;
188
194 [[nodiscard]]
195 static auto identifier() noexcept -> const std::string&;
196
202 [[nodiscard]]
203 static auto creator() noexcept -> const std::string&;
204
210 [[nodiscard]]
211 static auto copyright() noexcept -> const std::string&;
212
218 [[nodiscard]]
219 static auto website() noexcept -> const std::string&;
220
226 [[nodiscard]]
227 static auto log_dir() noexcept -> const std::string&;
228
234 [[nodiscard]]
235 static auto root_dir() noexcept -> std::filesystem::path;
236
242 [[nodiscard]]
243 static auto assets_dir() noexcept -> std::filesystem::path;
244
250 [[nodiscard]]
251 static auto editor_dir() noexcept -> std::filesystem::path;
252
258 [[nodiscard]]
259 static auto asset_pack() noexcept -> const std::string&;
260
266 [[nodiscard]]
267 static auto use_loose_assets() noexcept -> bool;
268
274 [[nodiscard]]
275 static auto assets_dir_music() noexcept -> const std::string&;
276
282 [[nodiscard]]
283 static auto assets_dir_sfx() noexcept -> const std::string&;
284
290 [[nodiscard]]
291 static auto assets_dir_voice() noexcept -> const std::string&;
292
298 [[nodiscard]]
299 static auto assets_dir_font() noexcept -> const std::string&;
300
306 [[nodiscard]]
307 static auto assets_dir_script() noexcept -> const std::string&;
308
314 [[nodiscard]]
315 static auto assets_dir_shaders() noexcept -> const std::string&;
316
322 [[nodiscard]]
323 static auto assets_dir_animation() noexcept -> const std::string&;
324
330 [[nodiscard]]
331 static auto assets_dir_texture() noexcept -> const std::string&;
332
338 [[nodiscard]]
339 static auto assets_dir_prefabs() noexcept -> const std::string&;
340
346 [[nodiscard]]
347 static auto assets_dir_maps() noexcept -> const std::string&;
348
354 [[nodiscard]]
355 static auto assets_dir_video() noexcept -> const std::string&;
356
362 [[nodiscard]]
363 static auto assets_dir_ui() noexcept -> const std::string&;
364
365 private:
366 inline static int s_window_width;
367 inline static int s_window_height;
368 inline static std::string s_window_icon;
369 inline static bool s_fullscreen;
370 inline static bool s_maximized;
371 inline static bool s_vsync;
372 inline static bool s_resizable;
373 inline static bool s_border;
374
375 inline static bool s_mouse_grabbed;
376 inline static bool s_cursor_show;
377 inline static std::string s_cursor_icon;
378 inline static glm::ivec2 s_cursor_hotspot;
379
380 inline static int s_audio_freq;
381
382 inline static int s_ansio;
383 inline static bool s_mipmap;
385 inline static int s_max_quads;
386
387 inline static std::string s_title;
388 inline static std::string s_version;
389 inline static std::string s_identifier;
390 inline static std::string s_creator;
391 inline static std::string s_copyright;
392 inline static std::string s_website;
393
394 inline static std::filesystem::path s_assets_dir;
395 inline static std::filesystem::path s_editor_dir;
396 inline static std::string s_asset_pack;
397 inline static bool s_use_loose_assets;
398 inline static std::string s_assets_music;
399 inline static std::string s_assets_sfx;
400 inline static std::string s_assets_voice;
401 inline static std::string s_assets_font;
402 inline static std::string s_assets_script;
403 inline static std::string s_assets_shaders;
404 inline static std::string s_assets_animation;
405 inline static std::string s_assets_texture;
406 inline static std::string s_assets_prefabs;
407 inline static std::string s_assets_maps;
408 inline static std::string s_assets_video;
409 inline static std::string s_assets_ui;
410 };
411} // namespace galaxy
412
413/*
414// config.restore<int>("flag_bitset_count", 8, "misc");
415
416// config.restore<float>("world_to_box2d", 0.01f, "physics");
417// config.restore<float>("box2d_to_world", 100.0f, "physics");
418// config.restore<int>("flag_bitset_count", 8, "misc");
419
420// config.restore<float>("world_to_box2d", 0.01f, "physics");
421// config.restore<float>("box2d_to_world", 100.0f, "physics");
422
423// config.restore<int>("ansiotrophic_filtering", 16, "window");
424// config.restore<bool>("highdpi", false, "window");
425// s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
426config.restore<int>("window_width", 1920, "window");
427config.restore<int>("window_height", 1080, "window");
428config.restore<int>("frame_width", 640, "window");
429config.restore<int>("frame_height", 360, "window");
430
431// s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
432// s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
433// s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
434// s_highdpi = config.get<bool>("highdpi", "window");
438//[[nodiscard]]
439// static auto flag_bitset_count() noexcept -> int;
440
444//[[nodiscard]]
445// static auto world_to_box2d() noexcept -> float;
446
450//[[nodiscard]]
451// static auto box2d_to_world() noexcept -> float;
452
453
454
458//[[nodiscard]]
459// static auto highdpi() noexcept -> bool;
460
461// inline static int s_flag_bitset_count;
462
463// inline static float s_world_to_box2d;
464// inline static float s_box2d_to_world;
465
466// inline static bool s_highdpi;
467
468config.restore<float>("ui_font_size", 14.0f);
469config.restore<std::string>("default_lang", "en_au");
470
471config.restore<float>("sfx_volume", 1.0f, "audio");
472config.restore<float>("music_volume", 1.0f, "audio");
473config.restore<float>("dialogue_volume", 1.0f, "audio");
474config.restore<int>("listener_count", 1, "audio");
475
476
477config.restore<bool>("smaa", false, "graphics.effects");
478config.restore<bool>("sharpen", false, "graphics.effects");
479config.restore<bool>("gamma_correction", false, "graphics.effects");
480config.restore<bool>("chromatic_abberation", false, "graphics.effects");
481config.restore<bool>("gaussian_blur", false, "graphics.effects");
482config.restore<bool>("film_grain", false, "graphics.effects");
483
484config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
485config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
486config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
487config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
488config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
489config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
490
494// #define GALAXY_ENTITY_SIZE std::uint64_t
495*/
496
497#endif
Application.hpp galaxy.
GLTextureFilter
Mipmap filtering.
Definition Enums.hpp:70
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:371
static int s_max_quads
Definition Settings.hpp:385
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:139
static std::string s_asset_pack
Definition Settings.hpp:396
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:250
static std::string s_title
Definition Settings.hpp:387
static std::string s_assets_video
Definition Settings.hpp:408
static std::string s_assets_prefabs
Definition Settings.hpp:406
static std::string s_assets_music
Definition Settings.hpp:398
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:134
static auto log_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:244
static auto ansiotrophy() noexcept -> int
Ansiotropic filtering level.
Definition Settings.cpp:194
static auto fullscreen() noexcept -> bool
Is window started fullscreen.
Definition Settings.cpp:144
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:315
static auto copyright() noexcept -> const std::string &
Copyright message.
Definition Settings.cpp:234
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:310
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:154
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:285
static std::string s_cursor_icon
Definition Settings.hpp:377
static int s_window_height
Definition Settings.hpp:367
static auto mipmap() noexcept -> bool
Mipmapping.
Definition Settings.cpp:199
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:129
static bool s_use_loose_assets
Definition Settings.hpp:397
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:300
static std::string s_assets_sfx
Definition Settings.hpp:399
static std::string s_copyright
Definition Settings.hpp:391
static auto window_border() noexcept -> bool
Controls if a window has a border around it (including titlebar).
Definition Settings.cpp:164
static std::string s_assets_script
Definition Settings.hpp:402
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:330
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:76
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:270
static std::string s_assets_texture
Definition Settings.hpp:405
static bool s_resizable
Definition Settings.hpp:372
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:305
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:295
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:275
static int s_window_width
Definition Settings.hpp:366
static auto max_quads() noexcept -> int
Max quads to render at once.
Definition Settings.cpp:209
static auto window_resizable() noexcept -> bool
Is the window resizable.
Definition Settings.cpp:159
static auto identifier() noexcept -> const std::string &
Game identifier i.e. com.galaxy.app.
Definition Settings.cpp:224
static bool s_fullscreen
Definition Settings.hpp:369
static auto maximized() noexcept -> bool
Is window started maximized?
Definition Settings.cpp:149
static auto texture_filter() noexcept -> GLTextureFilter
Texture filtering type.
Definition Settings.cpp:204
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:214
static std::string s_creator
Definition Settings.hpp:390
static std::string s_assets_voice
Definition Settings.hpp:400
static int s_ansio
Definition Settings.hpp:382
static auto cursor_show() noexcept -> bool
Is the mouse cursor visible or not.
Definition Settings.cpp:174
static bool s_mouse_grabbed
Definition Settings.hpp:375
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:255
static auto cursor_hotspot() noexcept -> const glm::ivec2 &
Cursor selector point (hotspot).
Definition Settings.cpp:184
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:265
static std::filesystem::path s_assets_dir
Definition Settings.hpp:394
static auto version() noexcept -> const std::string &
Game semver.
Definition Settings.cpp:219
static auto audio_freq() noexcept -> int
Set audio frequency to use with SDL.
Definition Settings.cpp:189
static auto mouse_grabbed() noexcept -> bool
Is the cursor grabbed.
Definition Settings.cpp:169
static std::string s_assets_maps
Definition Settings.hpp:407
static auto website() noexcept -> const std::string &
Website URL.
Definition Settings.cpp:239
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:280
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:320
static bool s_maximized
Definition Settings.hpp:370
static std::string s_assets_shaders
Definition Settings.hpp:403
static bool s_cursor_show
Definition Settings.hpp:376
static GLTextureFilter s_filtering
Definition Settings.hpp:384
static std::string s_assets_animation
Definition Settings.hpp:404
static std::filesystem::path s_editor_dir
Definition Settings.hpp:395
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:401
static std::string s_assets_ui
Definition Settings.hpp:409
static bool s_mipmap
Definition Settings.hpp:383
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:260
static std::string s_website
Definition Settings.hpp:392
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:325
static std::string s_version
Definition Settings.hpp:388
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:179
static bool s_border
Definition Settings.hpp:373
static glm::ivec2 s_cursor_hotspot
Definition Settings.hpp:378
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:290
static auto creator() noexcept -> const std::string &
Owner.
Definition Settings.cpp:229
static int s_audio_freq
Definition Settings.hpp:380
static std::string s_window_icon
Definition Settings.hpp:368
static std::string s_identifier
Definition Settings.hpp:389