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 window_width() noexcept -> int;
40
46 [[nodiscard]]
47 static auto window_height() noexcept -> int;
48
54 [[nodiscard]]
55 static auto window_icon() noexcept -> const std::string&;
56
62 [[nodiscard]]
63 static auto fullscreen() noexcept -> bool;
64
72 [[nodiscard]]
73 static auto maximized() noexcept -> bool;
74
80 [[nodiscard]]
81 static auto vsync() noexcept -> bool;
82
88 [[nodiscard]]
89 static auto window_resizable() noexcept -> bool;
90
96 [[nodiscard]]
97 static auto window_border() noexcept -> bool;
98
104 [[nodiscard]]
105 static auto mouse_grabbed() noexcept -> bool;
106
112 [[nodiscard]]
113 static auto cursor_show() noexcept -> bool;
114
120 [[nodiscard]]
121 static auto cursor_icon() noexcept -> const std::string&;
122
128 [[nodiscard]]
129 static auto cursor_hotspot() noexcept -> const glm::ivec2&;
130
136 [[nodiscard]]
137 static auto audio_freq() noexcept -> int;
138
144 [[nodiscard]]
145 static auto title() noexcept -> const std::string&;
146
152 [[nodiscard]]
153 static auto version() noexcept -> const std::string&;
154
160 [[nodiscard]]
161 static auto identifier() noexcept -> const std::string&;
162
168 [[nodiscard]]
169 static auto creator() noexcept -> const std::string&;
170
176 [[nodiscard]]
177 static auto copyright() noexcept -> const std::string&;
178
184 [[nodiscard]]
185 static auto website() noexcept -> const std::string&;
186
192 [[nodiscard]]
193 static auto log_dir() noexcept -> const std::string&;
194
200 [[nodiscard]]
201 static auto root_dir() noexcept -> std::filesystem::path;
202
208 [[nodiscard]]
209 static auto assets_dir() noexcept -> std::filesystem::path;
210
216 [[nodiscard]]
217 static auto editor_dir() noexcept -> std::filesystem::path;
218
224 [[nodiscard]]
225 static auto asset_pack() noexcept -> const std::string&;
226
232 [[nodiscard]]
233 static auto use_loose_assets() noexcept -> bool;
234
240 [[nodiscard]]
241 static auto assets_dir_music() noexcept -> const std::string&;
242
248 [[nodiscard]]
249 static auto assets_dir_sfx() noexcept -> const std::string&;
250
256 [[nodiscard]]
257 static auto assets_dir_voice() noexcept -> const std::string&;
258
264 [[nodiscard]]
265 static auto assets_dir_font() noexcept -> const std::string&;
266
272 [[nodiscard]]
273 static auto assets_dir_script() noexcept -> const std::string&;
274
280 [[nodiscard]]
281 static auto assets_dir_shaders() noexcept -> const std::string&;
282
288 [[nodiscard]]
289 static auto assets_dir_animation() noexcept -> const std::string&;
290
296 [[nodiscard]]
297 static auto assets_dir_texture() noexcept -> const std::string&;
298
304 [[nodiscard]]
305 static auto assets_dir_prefabs() noexcept -> const std::string&;
306
312 [[nodiscard]]
313 static auto assets_dir_maps() noexcept -> const std::string&;
314
320 [[nodiscard]]
321 static auto assets_dir_video() noexcept -> const std::string&;
322
328 [[nodiscard]]
329 static auto assets_dir_ui() noexcept -> const std::string&;
330
331 private:
332 inline static int s_window_width;
333 inline static int s_window_height;
334 inline static std::string s_window_icon;
335 inline static bool s_fullscreen;
336 inline static bool s_maximized;
337 inline static bool s_vsync;
338 inline static bool s_resizable;
339 inline static bool s_border;
340
341 inline static bool s_mouse_grabbed;
342 inline static bool s_cursor_show;
343 inline static std::string s_cursor_icon;
344 inline static glm::ivec2 s_cursor_hotspot;
345
346 inline static int s_audio_freq;
347
348 inline static std::string s_title;
349 inline static std::string s_version;
350 inline static std::string s_identifier;
351 inline static std::string s_creator;
352 inline static std::string s_copyright;
353 inline static std::string s_website;
354
355 inline static std::filesystem::path s_assets_dir;
356 inline static std::filesystem::path s_editor_dir;
357 inline static std::string s_asset_pack;
358 inline static bool s_use_loose_assets;
359 inline static std::string s_assets_music;
360 inline static std::string s_assets_sfx;
361 inline static std::string s_assets_voice;
362 inline static std::string s_assets_font;
363 inline static std::string s_assets_script;
364 inline static std::string s_assets_shaders;
365 inline static std::string s_assets_animation;
366 inline static std::string s_assets_texture;
367 inline static std::string s_assets_prefabs;
368 inline static std::string s_assets_maps;
369 inline static std::string s_assets_video;
370 inline static std::string s_assets_ui;
371 };
372} // namespace galaxy
373
374/*
375// config.restore<int>("flag_bitset_count", 8, "misc");
376
377// config.restore<float>("world_to_box2d", 0.01f, "physics");
378// config.restore<float>("box2d_to_world", 100.0f, "physics");
379// config.restore<int>("flag_bitset_count", 8, "misc");
380
381// config.restore<float>("world_to_box2d", 0.01f, "physics");
382// config.restore<float>("box2d_to_world", 100.0f, "physics");
383
384// config.restore<int>("ansiotrophic_filtering", 16, "window");
385// config.restore<bool>("highdpi", false, "window");
386// s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
387
388// s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
389// s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
390// s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
391// s_highdpi = config.get<bool>("highdpi", "window");
395//[[nodiscard]]
396// static auto flag_bitset_count() noexcept -> int;
397
401//[[nodiscard]]
402// static auto world_to_box2d() noexcept -> float;
403
407//[[nodiscard]]
408// static auto box2d_to_world() noexcept -> float;
409
413//[[nodiscard]]
414// static auto ansio_level() noexcept -> int;
415
419//[[nodiscard]]
420// static auto highdpi() noexcept -> bool;
421
422// inline static int s_flag_bitset_count;
423
424// inline static float s_world_to_box2d;
425// inline static float s_box2d_to_world;
426// inline static int s_ansio_filtering;
427// inline static bool s_highdpi;
428
429config.restore<float>("ui_font_size", 14.0f);
430config.restore<std::string>("default_lang", "en_au");
431
432config.restore<float>("sfx_volume", 1.0f, "audio");
433config.restore<float>("music_volume", 1.0f, "audio");
434config.restore<float>("dialogue_volume", 1.0f, "audio");
435config.restore<int>("listener_count", 1, "audio");
436
437config.restore<bool>("trilinear_filtering", false, "graphics");
438config.restore<int>("ansiotrophic_filtering", 2, "graphics");
439config.restore<bool>("smaa", false, "graphics.effects");
440config.restore<bool>("sharpen", false, "graphics.effects");
441config.restore<bool>("gamma_correction", false, "graphics.effects");
442config.restore<bool>("chromatic_abberation", false, "graphics.effects");
443config.restore<bool>("gaussian_blur", false, "graphics.effects");
444config.restore<bool>("film_grain", false, "graphics.effects");
445
446config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
447config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
448config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
449config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
450config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
451config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
452
456// #define GALAXY_ENTITY_SIZE std::uint64_t
457*/
458
459#endif
Animated.cpp galaxy.
Definition Animated.cpp:16
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:337
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:126
static std::string s_asset_pack
Definition Settings.hpp:357
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:217
static std::string s_title
Definition Settings.hpp:348
static std::string s_assets_video
Definition Settings.hpp:369
static std::string s_assets_prefabs
Definition Settings.hpp:367
static std::string s_assets_music
Definition Settings.hpp:359
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:121
static auto log_dir() noexcept -> const std::string &
Current root directory of application, unless it has been changed.
Definition Settings.cpp:211
static auto fullscreen() noexcept -> bool
Is window started fullscreen.
Definition Settings.cpp:131
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:282
static auto copyright() noexcept -> const std::string &
Copyright message.
Definition Settings.cpp:201
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:277
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:141
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:252
static std::string s_cursor_icon
Definition Settings.hpp:343
static int s_window_height
Definition Settings.hpp:333
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:116
static bool s_use_loose_assets
Definition Settings.hpp:358
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:267
static std::string s_assets_sfx
Definition Settings.hpp:360
static std::string s_copyright
Definition Settings.hpp:352
static auto window_border() noexcept -> bool
Controls if a window has a border around it (including titlebar).
Definition Settings.cpp:151
static std::string s_assets_script
Definition Settings.hpp:363
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:297
static auto set_settings_from_config() -> void
Set all our settings using the provided config file.
Definition Settings.cpp:70
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:237
static std::string s_assets_texture
Definition Settings.hpp:366
static bool s_resizable
Definition Settings.hpp:338
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:272
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:262
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:242
static int s_window_width
Definition Settings.hpp:332
static auto window_resizable() noexcept -> bool
Is the window resizable.
Definition Settings.cpp:146
static auto identifier() noexcept -> const std::string &
Game identifier i.e. com.galaxy.app.
Definition Settings.cpp:191
static bool s_fullscreen
Definition Settings.hpp:335
static auto maximized() noexcept -> bool
Is window started maximized?
Definition Settings.cpp:136
static auto title() noexcept -> const std::string &
Game title.
Definition Settings.cpp:181
static std::string s_creator
Definition Settings.hpp:351
static std::string s_assets_voice
Definition Settings.hpp:361
static auto cursor_show() noexcept -> bool
Is the mouse cursor visible or not.
Definition Settings.cpp:161
static bool s_mouse_grabbed
Definition Settings.hpp:341
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:222
static auto cursor_hotspot() noexcept -> const glm::ivec2 &
Cursor selector point (hotspot).
Definition Settings.cpp:171
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:232
static std::filesystem::path s_assets_dir
Definition Settings.hpp:355
static auto version() noexcept -> const std::string &
Game semver.
Definition Settings.cpp:186
static auto audio_freq() noexcept -> int
Set audio frequency to use with SDL.
Definition Settings.cpp:176
static auto mouse_grabbed() noexcept -> bool
Is the cursor grabbed.
Definition Settings.cpp:156
static std::string s_assets_maps
Definition Settings.hpp:368
static auto website() noexcept -> const std::string &
Website URL.
Definition Settings.cpp:206
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:247
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:287
static bool s_maximized
Definition Settings.hpp:336
static std::string s_assets_shaders
Definition Settings.hpp:364
static bool s_cursor_show
Definition Settings.hpp:342
static std::string s_assets_animation
Definition Settings.hpp:365
static std::filesystem::path s_editor_dir
Definition Settings.hpp:356
static auto set_config_to_default() -> void
Restore all config settings to default.
Definition Settings.cpp:22
static std::string s_assets_font
Definition Settings.hpp:362
static std::string s_assets_ui
Definition Settings.hpp:370
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:227
static std::string s_website
Definition Settings.hpp:353
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:292
static std::string s_version
Definition Settings.hpp:349
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:166
static bool s_border
Definition Settings.hpp:339
static glm::ivec2 s_cursor_hotspot
Definition Settings.hpp:344
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:257
static auto creator() noexcept -> const std::string &
Owner.
Definition Settings.cpp:196
static int s_audio_freq
Definition Settings.hpp:346
static std::string s_window_icon
Definition Settings.hpp:334
static std::string s_identifier
Definition Settings.hpp:350