galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages Concepts
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 <SFML/System/Vector2.hpp>
12
14
15namespace galaxy
16{
20 struct settings
21 {
22 public:
28 static auto set_config_to_default(core::Config& config) -> void;
29
35 static auto set_settings_from_config(core::Config& config) -> void;
36
42 static auto set_delta_time(const double dt) noexcept -> void;
43
49 [[nodiscard]]
50 static auto dt() noexcept -> double;
51
55 [[nodiscard]]
56 static auto ups() noexcept -> double;
57
61 [[nodiscard]]
62 static auto window_width() noexcept -> int;
63
67 [[nodiscard]]
68 static auto window_height() noexcept -> int;
69
73 [[nodiscard]]
74 static auto window_title() noexcept -> const std::string&;
75
79 [[nodiscard]]
80 static auto window_icon() noexcept -> const std::string&;
81
85 [[nodiscard]]
86 static auto fullscreen() noexcept -> bool;
87
91 [[nodiscard]]
92 static auto key_repeat() noexcept -> bool;
93
97 [[nodiscard]]
98 static auto vsync() noexcept -> bool;
99
103 [[nodiscard]]
104 static auto msaa() noexcept -> bool;
105
109 [[nodiscard]]
110 static auto cursor_visible() noexcept -> bool;
111
115 [[nodiscard]]
116 static auto cursor_grabbed() noexcept -> bool;
117
121 [[nodiscard]]
122 static auto cursor_icon() noexcept -> const std::string&;
123
127 [[nodiscard]]
128 static auto cursor_icon_size() noexcept -> const sf::Vector2u&;
129
133 [[nodiscard]]
134 static auto cursor_hotspot() noexcept -> const sf::Vector2u&;
135
139 [[nodiscard]]
140 static auto root_dir() noexcept -> std::filesystem::path;
141
145 [[nodiscard]]
146 static auto assets_dir() noexcept -> std::filesystem::path;
147
151 [[nodiscard]]
152 static auto editor_dir() noexcept -> std::filesystem::path;
153
157 [[nodiscard]]
158 static auto asset_pack() noexcept -> const std::string&;
159
163 [[nodiscard]]
164 static auto use_loose_assets() noexcept -> bool;
165
169 [[nodiscard]]
170 static auto assets_dir_music() noexcept -> const std::string&;
171
175 [[nodiscard]]
176 static auto assets_dir_sfx() noexcept -> const std::string&;
177
181 [[nodiscard]]
182 static auto assets_dir_voice() noexcept -> const std::string&;
183
187 [[nodiscard]]
188 static auto assets_dir_font() noexcept -> const std::string&;
189
193 [[nodiscard]]
194 static auto assets_dir_script() noexcept -> const std::string&;
195
199 [[nodiscard]]
200 static auto assets_dir_shaders() noexcept -> const std::string&;
201
205 [[nodiscard]]
206 static auto assets_dir_animation() noexcept -> const std::string&;
207
211 [[nodiscard]]
212 static auto assets_dir_texture() noexcept -> const std::string&;
213
217 [[nodiscard]]
218 static auto assets_dir_prefabs() noexcept -> const std::string&;
219
223 [[nodiscard]]
224 static auto assets_dir_maps() noexcept -> const std::string&;
225
229 [[nodiscard]]
230 static auto assets_dir_video() noexcept -> const std::string&;
231
235 [[nodiscard]]
236 static auto assets_dir_ui() noexcept -> const std::string&;
237
238 private:
239 inline static double s_delta_time;
240
241 inline static double s_ups;
242
243 inline static int s_window_width;
244 inline static int s_window_height;
245 inline static std::string s_title;
246 inline static std::string s_icon;
247 inline static bool s_fullscreen;
248 inline static bool s_key_repeat;
249 inline static bool s_vsync;
250 inline static bool s_msaa;
251
252 inline static bool s_cursor_visible;
253 inline static bool s_cursor_grabbed;
254 inline static std::string s_cursor_icon;
255 inline static sf::Vector2u s_cursor_icon_size;
256 inline static sf::Vector2u s_cursor_hotspot;
257
258 inline static std::filesystem::path s_assets_dir;
259 inline static std::filesystem::path s_editor_dir;
260 inline static std::string s_asset_pack;
261 inline static bool s_use_loose_assets;
262 inline static std::string s_assets_music;
263 inline static std::string s_assets_sfx;
264 inline static std::string s_assets_voice;
265 inline static std::string s_assets_font;
266 inline static std::string s_assets_script;
267 inline static std::string s_assets_shaders;
268 inline static std::string s_assets_animation;
269 inline static std::string s_assets_texture;
270 inline static std::string s_assets_prefabs;
271 inline static std::string s_assets_maps;
272 inline static std::string s_assets_video;
273 inline static std::string s_assets_ui;
274 };
275} // namespace galaxy
276
280#define GALAXY_ZLIB_COMPLETE_CHUNK 16384
281
285#define GALAXY_UNUSED(var) ((void)(var))
286
287#if defined(_DEBUG) || defined(DEBUG)
291#define GALAXY_DEBUG_BUILD true
292#elif defined(_NDEBUG) || defined(NDEBUG)
296#define GALAXY_DEBUG_BUILD false
297#endif
298
299/*
300// config.restore<int>("flag_bitset_count", 8, "misc");
301
302 // config.restore<float>("world_to_box2d", 0.01f, "physics");
303 // config.restore<float>("box2d_to_world", 100.0f, "physics");
304 // config.restore<int>("flag_bitset_count", 8, "misc");
305
306 // config.restore<float>("world_to_box2d", 0.01f, "physics");
307 // config.restore<float>("box2d_to_world", 100.0f, "physics");
308
309 // config.restore<int>("ansiotrophic_filtering", 16, "window");
310 // config.restore<bool>("highdpi", false, "window");
311 // s_flag_bitset_count = config.get<int>("flag_bitset_count", "misc");
312
313 // s_world_to_box2d = config.get<float>("world_to_box2d", "physics");
314 // s_box2d_to_world = config.get<float>("box2d_to_world", "physics");
315 // s_ansio_filtering = config.get<int>("ansiotrophic_filtering", "window");
316 // s_highdpi = config.get<bool>("highdpi", "window");
320 //[[nodiscard]]
321 // static auto flag_bitset_count() noexcept -> int;
322
326 //[[nodiscard]]
327 // static auto world_to_box2d() noexcept -> float;
328
332 //[[nodiscard]]
333 // static auto box2d_to_world() noexcept -> float;
334
338 //[[nodiscard]]
339 // static auto ansio_level() noexcept -> int;
340
344 //[[nodiscard]]
345 // static auto highdpi() noexcept -> bool;
346
347// inline static int s_flag_bitset_count;
348
349 // inline static float s_world_to_box2d;
350 // inline static float s_box2d_to_world;
351 // inline static int s_ansio_filtering;
352 // inline static bool s_highdpi;
353
354config.restore<float>("ui_font_size", 14.0f);
355config.restore<std::string>("default_lang", "en_au");
356
357config.restore<float>("sfx_volume", 1.0f, "audio");
358config.restore<float>("music_volume", 1.0f, "audio");
359config.restore<float>("dialogue_volume", 1.0f, "audio");
360config.restore<int>("listener_count", 1, "audio");
361
362config.restore<bool>("trilinear_filtering", false, "graphics");
363config.restore<int>("ansiotrophic_filtering", 2, "graphics");
364config.restore<bool>("smaa", false, "graphics.effects");
365config.restore<bool>("sharpen", false, "graphics.effects");
366config.restore<bool>("gamma_correction", false, "graphics.effects");
367config.restore<bool>("chromatic_abberation", false, "graphics.effects");
368config.restore<bool>("gaussian_blur", false, "graphics.effects");
369config.restore<bool>("film_grain", false, "graphics.effects");
370
371config.restore<int>("camera_foward", input::key_to_int(input::Keys::KEY_W), "input");
372config.restore<int>("camera_backward", input::key_to_int(input::Keys::KEY_S), "input");
373config.restore<int>("camera_left", input::key_to_int(input::Keys::KEY_A), "input");
374config.restore<int>("camera_right", input::key_to_int(input::Keys::KEY_D), "input");
375config.restore<int>("camera_rotate_left", input::key_to_int(input::Keys::KEY_Q), "input");
376config.restore<int>("camera_rotate_right", input::key_to_int(input::Keys::KEY_E), "input");
377
381// #define GALAXY_ENTITY_SIZE std::uint64_t
382*/
383
384#endif
Allows you to read, write and manipulate JSON config files.
Definition Config.hpp:25
Timer.hpp galaxy.
Definition Async.hpp:17
Helper class to encapsulate our global settings we want to quickly access across app.
Definition Settings.hpp:21
static auto cursor_icon() noexcept -> const std::string &
Cursor texture file in vfs.
Definition Settings.cpp:157
static std::string s_title
Definition Settings.hpp:245
static std::filesystem::path s_assets_dir
Definition Settings.hpp:258
static auto assets_dir_video() noexcept -> const std::string &
Video asset location.
Definition Settings.cpp:247
static std::string s_cursor_icon
Definition Settings.hpp:254
static auto assets_dir_voice() noexcept -> const std::string &
Voice asset location.
Definition Settings.cpp:207
static std::string s_icon
Definition Settings.hpp:246
static bool s_fullscreen
Definition Settings.hpp:247
static bool s_use_loose_assets
Definition Settings.hpp:261
static auto dt() noexcept -> double
Get galaxy delta time.
Definition Settings.cpp:97
static sf::Vector2u s_cursor_hotspot
Definition Settings.hpp:256
static auto window_icon() noexcept -> const std::string &
Window icon file in vfs.
Definition Settings.cpp:122
static auto assets_dir_script() noexcept -> const std::string &
Scripts asset location.
Definition Settings.cpp:217
static auto msaa() noexcept -> bool
Enable MSAA.
Definition Settings.cpp:142
static auto vsync() noexcept -> bool
Vsync control.
Definition Settings.cpp:137
static auto window_width() noexcept -> int
Window creation width.
Definition Settings.cpp:107
static std::string s_assets_animation
Definition Settings.hpp:268
static std::string s_assets_voice
Definition Settings.hpp:264
static std::filesystem::path s_editor_dir
Definition Settings.hpp:259
static auto asset_pack() noexcept -> const std::string &
Name of packed assets file.
Definition Settings.cpp:187
static double s_delta_time
Definition Settings.hpp:239
static auto window_height() noexcept -> int
Window creation height.
Definition Settings.cpp:112
static auto root_dir() noexcept -> std::filesystem::path
Current root directory of application, unless it has been changed.
Definition Settings.cpp:172
static int s_window_width
Definition Settings.hpp:243
static double s_ups
Definition Settings.hpp:241
static auto cursor_hotspot() noexcept -> const sf::Vector2u &
Cursor selector point (hotspot).
Definition Settings.cpp:167
static auto assets_dir_prefabs() noexcept -> const std::string &
Prefab asset location.
Definition Settings.cpp:237
static int s_window_height
Definition Settings.hpp:244
static auto assets_dir_shaders() noexcept -> const std::string &
Shaders asset location.
Definition Settings.cpp:222
static auto cursor_visible() noexcept -> bool
Show/hide mouse cursor.
Definition Settings.cpp:147
static auto assets_dir_animation() noexcept -> const std::string &
Animation data location.
Definition Settings.cpp:227
static std::string s_assets_prefabs
Definition Settings.hpp:270
static auto set_config_to_default(core::Config &config) -> void
Restore all config settings to default.
Definition Settings.cpp:12
static std::string s_assets_texture
Definition Settings.hpp:269
static auto editor_dir() noexcept -> std::filesystem::path
Directory for editor specific stuff.
Definition Settings.cpp:182
static auto set_delta_time(const double dt) noexcept -> void
Set galaxy delta time.
Definition Settings.cpp:92
static auto window_title() noexcept -> const std::string &
Window title.
Definition Settings.cpp:117
static bool s_cursor_grabbed
Definition Settings.hpp:253
static std::string s_assets_music
Definition Settings.hpp:262
static std::string s_assets_sfx
Definition Settings.hpp:263
static auto assets_dir_font() noexcept -> const std::string &
Font asset location.
Definition Settings.cpp:212
static auto cursor_grabbed() noexcept -> bool
Grab/release mouse cursor.
Definition Settings.cpp:152
static auto assets_dir_maps() noexcept -> const std::string &
Maps asset location.
Definition Settings.cpp:242
static std::string s_assets_video
Definition Settings.hpp:272
static std::string s_assets_ui
Definition Settings.hpp:273
static auto ups() noexcept -> double
Game updates per second, independant of FPS, see "fixed timestep gameloop".
Definition Settings.cpp:102
static auto assets_dir() noexcept -> std::filesystem::path
Main data directory.
Definition Settings.cpp:177
static std::string s_asset_pack
Definition Settings.hpp:260
static auto key_repeat() noexcept -> bool
Enable if a keypress will dispatch a single or repeating events.
Definition Settings.cpp:132
static auto assets_dir_texture() noexcept -> const std::string &
Textures asset location.
Definition Settings.cpp:232
static bool s_cursor_visible
Definition Settings.hpp:252
static auto use_loose_assets() noexcept -> bool
Should asset data be read from pack or assets dir.
Definition Settings.cpp:192
static auto assets_dir_music() noexcept -> const std::string &
Music asset location.
Definition Settings.cpp:197
static bool s_key_repeat
Definition Settings.hpp:248
static bool s_msaa
Definition Settings.hpp:250
static bool s_vsync
Definition Settings.hpp:249
static auto cursor_icon_size() noexcept -> const sf::Vector2u &
Cursor icon texture size.
Definition Settings.cpp:162
static auto assets_dir_sfx() noexcept -> const std::string &
SFX asset location.
Definition Settings.cpp:202
static auto set_settings_from_config(core::Config &config) -> void
Set all our settings using the provided config file.
Definition Settings.cpp:53
static sf::Vector2u s_cursor_icon_size
Definition Settings.hpp:255
static std::string s_assets_maps
Definition Settings.hpp:271
static std::string s_assets_shaders
Definition Settings.hpp:267
static auto assets_dir_ui() noexcept -> const std::string &
UI asset location.
Definition Settings.cpp:252
static auto fullscreen() noexcept -> bool
Window maximized state.
Definition Settings.cpp:127
static std::string s_assets_font
Definition Settings.hpp:265
static std::string s_assets_script
Definition Settings.hpp:266