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.cpp
Go to the documentation of this file.
1
7
8#include <entt/locator/locator.hpp>
9
12
13#include "Settings.hpp"
14
15#ifdef GALAXY_WIN_PLATFORM
19#endif
20
21namespace galaxy
22{
24 {
25 auto& config = entt::locator<Config>::value();
26
27 config.restore<int>("width", 1920, "window");
28 config.restore<int>("height", 1080, "window");
29 config.restore<std::string>("icon", "", "window");
30 config.restore<bool>("fullscreen", false, "window");
31 config.restore<bool>("maximized", true, "window");
32 config.restore<bool>("vsync", false, "window");
33 config.restore<bool>("resizable", true, "window");
34 config.restore<bool>("border", true, "window");
35
36 config.restore<bool>("mouse_grabbed", false, "mouse");
37 config.restore<bool>("cursor_show", true, "mouse");
38 config.restore<std::string>("cursor_icon", "", "mouse");
39 config.restore<int>("x", 0, "mouse.cursor_hotspot");
40 config.restore<int>("y", 0, "mouse.cursor_hotspot");
41
42 config.restore<int>("audio_freq", 44100, "audio");
43
44 config.restore<int>("ansiotrophy", 16, "graphics");
45 config.restore<bool>("mipmap", true, "graphics");
46 config.restore<std::string>("texture_filter", "NEAREST", "graphics");
47 config.restore<int>("max_quads", 250, "graphics");
48
49 config.restore<std::string>("title", "galaxy app", "meta");
50 config.restore<std::string>("version", "1.0", "meta");
51 config.restore<std::string>("identifier", "com.galaxy.app", "meta");
52 config.restore<std::string>("creator", "reworks", "meta");
53 config.restore<std::string>("copyright", "2025+ reworks", "meta");
54 config.restore<std::string>("website", "https://reworks-org.github.io/galaxy/", "meta");
55
56 config.restore<std::string>("assets_dir", "assets/", "fs");
57 config.restore<std::string>("editor_dir", "editor/", "fs");
58 config.restore<std::string>("asset_pack", "assets.galaxy", "fs");
59 config.restore<bool>("use_loose_assets", true, "fs");
60 config.restore<std::string>("assets_music", "music/", "fs");
61 config.restore<std::string>("assets_sfx", "sfx/", "fs");
62 config.restore<std::string>("assets_voice", "voice/", "fs");
63 config.restore<std::string>("assets_font", "fonts/", "fs");
64 config.restore<std::string>("assets_script", "scripts/", "fs");
65 config.restore<std::string>("assets_shaders", "shaders/", "fs");
66 config.restore<std::string>("assets_animation", "animations/", "fs");
67 config.restore<std::string>("assets_texture", "textures/", "fs");
68 config.restore<std::string>("assets_prefabs", "prefabs/", "fs");
69 config.restore<std::string>("assets_maps", "maps/", "fs");
70 config.restore<std::string>("assets_video", "video/", "fs");
71 config.restore<std::string>("assets_ui", "ui/", "fs");
72
73 config.save();
74 }
75
77 {
78 auto& config = entt::locator<Config>::value();
79
80 s_window_width = *config.get<int>("width", "window");
81 s_window_height = *config.get<int>("height", "window");
82 s_window_icon = *config.get<std::string>("icon", "window");
83 s_fullscreen = *config.get<bool>("fullscreen", "window");
84 s_maximized = *config.get<bool>("maximized", "window");
85 s_vsync = *config.get<bool>("vsync", "window");
86 s_resizable = *config.get<bool>("resizable", "window");
87 s_border = *config.get<bool>("border", "window");
88
89 s_mouse_grabbed = *config.get<bool>("mouse_grabbed", "mouse");
90 s_cursor_show = *config.get<bool>("cursor_show", "mouse");
91 s_cursor_icon = *config.get<std::string>("cursor_icon", "mouse");
92 s_cursor_hotspot.x = *config.get<int>("x", "mouse.cursor_hotspot");
93 s_cursor_hotspot.y = *config.get<int>("y", "mouse.cursor_hotspot");
94
95 s_audio_freq = *config.get<int>("audio_freq", "audio");
96
97 s_ansio = *config.get<int>("ansiotrophy", "graphics");
98 s_mipmap = *config.get<bool>("mipmap", "graphics");
99 s_filtering = *config.get<std::string>("texture_filter", "graphics").and_then([](std::string_view filter) {
100 return magic_enum::enum_cast<GLTextureFilter>(filter);
101 });
102 s_max_quads = *config.get<int>("max_quads", "graphics");
103
104 s_title = *config.get<std::string>("title", "meta");
105 s_version = *config.get<std::string>("version", "meta");
106 s_identifier = *config.get<std::string>("identifier", "meta");
107 s_creator = *config.get<std::string>("creator", "meta");
108 s_copyright = *config.get<std::string>("copyright", "meta");
109 s_website = *config.get<std::string>("website", "meta");
110
111 s_assets_dir = *config.get<std::string>("assets_dir", "fs");
112 s_editor_dir = *config.get<std::string>("editor_dir", "fs");
113 s_asset_pack = *config.get<std::string>("asset_pack", "fs");
114 s_use_loose_assets = *config.get<bool>("use_loose_assets", "fs");
115 s_assets_music = *config.get<std::string>("assets_music", "fs");
116 s_assets_sfx = *config.get<std::string>("assets_sfx", "fs");
117 s_assets_voice = *config.get<std::string>("assets_voice", "fs");
118 s_assets_font = *config.get<std::string>("assets_font", "fs");
119 s_assets_script = *config.get<std::string>("assets_script", "fs");
120 s_assets_shaders = *config.get<std::string>("assets_shaders", "fs");
121 s_assets_animation = *config.get<std::string>("assets_animation", "fs");
122 s_assets_texture = *config.get<std::string>("assets_texture", "fs");
123 s_assets_prefabs = *config.get<std::string>("assets_prefabs", "fs");
124 s_assets_maps = *config.get<std::string>("assets_maps", "fs");
125 s_assets_video = *config.get<std::string>("assets_video", "fs");
126 s_assets_ui = *config.get<std::string>("assets_ui", "fs");
127 }
128
129 auto Settings::window_width() noexcept -> int
130 {
131 return s_window_width;
132 }
133
134 auto Settings::window_height() noexcept -> int
135 {
136 return s_window_height;
137 }
138
139 auto Settings::window_icon() noexcept -> const std::string&
140 {
141 return s_window_icon;
142 }
143
144 auto Settings::fullscreen() noexcept -> bool
145 {
146 return s_fullscreen;
147 }
148
149 auto Settings::maximized() noexcept -> bool
150 {
151 return s_maximized;
152 }
153
154 auto Settings::vsync() noexcept -> bool
155 {
156 return s_vsync;
157 }
158
159 auto Settings::window_resizable() noexcept -> bool
160 {
161 return s_resizable;
162 }
163
164 auto Settings::window_border() noexcept -> bool
165 {
166 return s_border;
167 }
168
169 auto Settings::mouse_grabbed() noexcept -> bool
170 {
171 return s_mouse_grabbed;
172 }
173
174 auto Settings::cursor_show() noexcept -> bool
175 {
176 return s_cursor_show;
177 }
178
179 auto Settings::cursor_icon() noexcept -> const std::string&
180 {
181 return s_cursor_icon;
182 }
183
184 auto Settings::cursor_hotspot() noexcept -> const glm::ivec2&
185 {
186 return s_cursor_hotspot;
187 }
188
189 auto Settings::audio_freq() noexcept -> int
190 {
191 return s_audio_freq;
192 }
193
194 auto Settings::ansiotrophy() noexcept -> int
195 {
196 return s_ansio;
197 }
198
199 auto Settings::mipmap() noexcept -> bool
200 {
201 return s_mipmap;
202 }
203
205 {
206 return s_filtering;
207 }
208
209 auto Settings::max_quads() noexcept -> int
210 {
211 return s_max_quads;
212 }
213
214 auto Settings::title() noexcept -> const std::string&
215 {
216 return s_title;
217 }
218
219 auto Settings::version() noexcept -> const std::string&
220 {
221 return s_version;
222 }
223
224 auto Settings::identifier() noexcept -> const std::string&
225 {
226 return s_identifier;
227 }
228
229 auto Settings::creator() noexcept -> const std::string&
230 {
231 return s_creator;
232 }
233
234 auto Settings::copyright() noexcept -> const std::string&
235 {
236 return s_copyright;
237 }
238
239 auto Settings::website() noexcept -> const std::string&
240 {
241 return s_website;
242 }
243
244 auto Settings::log_dir() noexcept -> const std::string&
245 {
246 static std::string log_dir = "logs/";
247 return log_dir;
248 }
249
250 auto Settings::root_dir() noexcept -> std::filesystem::path
251 {
252 return std::filesystem::current_path();
253 }
254
255 auto Settings::assets_dir() noexcept -> std::filesystem::path
256 {
257 return s_assets_dir;
258 }
259
260 auto Settings::editor_dir() noexcept -> std::filesystem::path
261 {
262 return s_editor_dir;
263 }
264
265 auto Settings::asset_pack() noexcept -> const std::string&
266 {
267 return s_asset_pack;
268 }
269
270 auto Settings::use_loose_assets() noexcept -> bool
271 {
272 return s_use_loose_assets;
273 }
274
275 auto Settings::assets_dir_music() noexcept -> const std::string&
276 {
277 return s_assets_music;
278 }
279
280 auto Settings::assets_dir_sfx() noexcept -> const std::string&
281 {
282 return s_assets_sfx;
283 }
284
285 auto Settings::assets_dir_voice() noexcept -> const std::string&
286 {
287 return s_assets_voice;
288 }
289
290 auto Settings::assets_dir_font() noexcept -> const std::string&
291 {
292 return s_assets_font;
293 }
294
295 auto Settings::assets_dir_script() noexcept -> const std::string&
296 {
297 return s_assets_script;
298 }
299
300 auto Settings::assets_dir_shaders() noexcept -> const std::string&
301 {
302 return s_assets_shaders;
303 }
304
305 auto Settings::assets_dir_animation() noexcept -> const std::string&
306 {
307 return s_assets_animation;
308 }
309
310 auto Settings::assets_dir_texture() noexcept -> const std::string&
311 {
312 return s_assets_texture;
313 }
314
315 auto Settings::assets_dir_prefabs() noexcept -> const std::string&
316 {
317 return s_assets_prefabs;
318 }
319
320 auto Settings::assets_dir_maps() noexcept -> const std::string&
321 {
322 return s_assets_maps;
323 }
324
325 auto Settings::assets_dir_video() noexcept -> const std::string&
326 {
327 return s_assets_video;
328 }
329
330 auto Settings::assets_dir_ui() noexcept -> const std::string&
331 {
332 return s_assets_ui;
333 }
334} // namespace galaxy
335
336#ifdef GALAXY_WIN_PLATFORM
338#endif
#define GALAXY_DISABLE_WARNING_POP
Definition Pragma.hpp:57
#define GALAXY_DISABLE_WARNING(x)
Definition Pragma.hpp:58
#define GALAXY_DISABLE_WARNING_PUSH
Macro for windows platform detection.
Definition Pragma.hpp:56
Animated.cpp galaxy.
Definition Animated.cpp:16
GLTextureFilter
Mipmap filtering.
Definition Enums.hpp:70
STL namespace.
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