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