20 #ifndef HEADER_USER_CONFIG_HPP
21 #define HEADER_USER_CONFIG_HPP
47 #include <irrString.h>
48 #include <IrrCompileConfig.h>
50 using irr::core::stringc;
51 using irr::core::stringw;
53 #include "utils/constants.hpp"
54 #include "utils/no_copy.hpp"
55 #include "utils/ptr_vector.hpp"
56 #include "utils/time.hpp"
71 bool m_can_be_deleted =
true;
72 std::string m_param_name;
73 std::string m_comment;
76 virtual void write(std::stringstream & stream)
const = 0;
77 virtual void writeInner(std::stringstream & stream,
int level = 0)
const;
78 virtual void findYourDataInAChildOf(
const XMLNode* node) = 0;
79 virtual void findYourDataInAnAttributeOf(
const XMLNode* node) = 0;
80 virtual irr::core::stringc toString()
const = 0;
86 std::vector<UserConfigParam*> m_attributes;
87 std::vector<GroupUserConfigParam*> m_children;
92 const char* comment = NULL);
93 void write(std::stringstream& stream)
const;
94 void writeInner(std::stringstream& stream,
int level = 0)
const;
95 void findYourDataInAChildOf(
const XMLNode* node);
96 void findYourDataInAnAttributeOf(
const XMLNode* node);
100 void clearChildren();
102 irr::core::stringc toString()
const;
108 template<
typename T,
typename U>
112 std::array<std::string, 3> m_key_names;
113 std::map<T, U> m_elements;
117 m_param_name = param_name;
125 std::array<std::string, 3> key_names,
126 std::map<T, U> default_value);
129 const char* comment = NULL);
132 const char* comment, std::array<std::string, 3> key_names,
133 std::map<T, U> default_value);
135 void write(std::stringstream& stream)
const;
136 void findYourDataInAChildOf(
const XMLNode* node);
137 void findYourDataInAnAttributeOf(
const XMLNode* node);
139 void addElement(T element, U value);
141 irr::core::stringc toString()
const;
143 operator std::map<T, U>&()
147 typename std::map<T, U>::iterator begin()
149 return m_elements.begin();
151 typename std::map<T, U>::iterator end()
153 return m_elements.end();
155 typename std::map<T, U>::iterator find(
const T& key)
157 return m_elements.find(key);
159 size_t erase(
const T& key)
161 return m_elements.erase(key);
165 return m_elements.empty();
167 std::map<T, U>& operator=(
const std::map<T, U>& v)
169 m_elements = std::map<T, U>(v);
174 m_elements = std::map<T,U>(v);
179 return m_elements.size();
181 U& operator[] (
const T key)
183 return m_elements[key];
187 return m_elements.at(key);
200 m_param_name = param_name;
208 const char* comment = NULL);
211 const char* comment = NULL);
213 void write(std::stringstream& stream)
const;
214 void findYourDataInAChildOf(
const XMLNode* node);
215 void findYourDataInAnAttributeOf(
const XMLNode* node);
217 irr::core::stringc toString()
const;
218 void setDefaultValue(
int v) { m_value = m_default_value = v; }
219 void revertToDefaults() { m_value = m_default_value; }
220 int getDefaultValue() {
return m_default_value; }
221 operator int()
const {
return m_value; }
222 int& operator++(
int dummy) { m_value++;
return m_value; }
223 int& operator=(
const int& v) { m_value = v;
return m_value; }
225 { m_value = (int)v;
return m_value; }
231 StkTime::TimeType m_value;
232 StkTime::TimeType m_default_value;
237 const char* comment = NULL);
241 void write(std::stringstream& stream)
const;
242 void findYourDataInAChildOf(
const XMLNode* node);
243 void findYourDataInAnAttributeOf(
const XMLNode* node);
245 irr::core::stringc toString()
const;
246 void revertToDefaults() { m_value = m_default_value; }
247 operator StkTime::TimeType()
const {
return m_value; }
248 StkTime::TimeType& operator=(
const StkTime::TimeType& v)
249 { m_value = v;
return m_value; }
251 { m_value = (int)v;
return m_value; }
259 std::string m_default_value;
262 m_param_name = param_name;
270 const char* comment);
273 const char* comment = NULL);
275 void write(std::stringstream& stream)
const;
276 void findYourDataInAChildOf(
const XMLNode* node);
277 void findYourDataInAnAttributeOf(
const XMLNode* node);
279 void revertToDefaults() { m_value = m_default_value; }
281 std::string getDefaultValue()
const {
return m_default_value; }
283 irr::core::stringc toString()
const {
return m_value.c_str(); }
285 operator std::string()
const {
return m_value; }
286 std::string& operator=(
const std::string& v)
287 { m_value = v;
return m_value; }
289 { m_value = (std::string)v;
return m_value; }
291 const char* c_str()
const {
return m_value.c_str(); }
299 bool m_default_value;
302 m_param_name = param_name;
309 const char* comment = NULL);
312 const char* comment = NULL);
313 void write(std::stringstream& stream)
const;
314 void findYourDataInAChildOf(
const XMLNode* node);
315 void findYourDataInAnAttributeOf(
const XMLNode* node);
317 irr::core::stringc toString()
const;
318 void revertToDefaults() { m_value = m_default_value; }
319 void setDefaultValue(
bool v) { m_value = m_default_value = v; }
321 operator bool()
const {
return m_value; }
322 bool& operator=(
const bool& v) { m_value = v;
return m_value; }
324 { m_value = (bool)v;
return m_value; }
332 float m_default_value;
335 m_param_name = param_name;
342 const char* comment = NULL);
345 const char* comment = NULL);
347 void write(std::stringstream& stream)
const;
348 void findYourDataInAChildOf(
const XMLNode* node);
349 void findYourDataInAnAttributeOf(
const XMLNode* node);
351 irr::core::stringc toString()
const;
352 void revertToDefaults() { m_value = m_default_value; }
353 void setDefaultValue(
float v) { m_value = m_default_value = v; }
355 operator float()
const {
return m_value; }
356 float& operator=(
const float& v) { m_value = v;
return m_value; }
358 { m_value = (float)v;
return m_value; }
362 enum AnimType {ANIMS_NONE = 0,
363 ANIMS_PLAYERS_ONLY = 1,
366 enum MultitouchControls
368 MULTITOUCH_CONTROLS_UNDEFINED = 0,
369 MULTITOUCH_CONTROLS_STEERING_WHEEL = 1,
370 MULTITOUCH_CONTROLS_ACCELEROMETER = 2,
371 MULTITOUCH_CONTROLS_GYROSCOPE = 3,
382 #define PARAM_PREFIX extern
385 #ifndef PARAM_DEFAULT
386 #define PARAM_DEFAULT(X)
402 "Whether sound effects are enabled or not (true or false)") );
406 "Whether musics are enabled or not (true or false)") );
409 &m_audio_group,
"The value in the audio options SFX spinner") );
412 &m_audio_group,
"Volume for sound effects, see openal AL_GAIN "
413 "for interpretation") );
416 &m_audio_group,
"The value in the audio options music spinner") );
419 &m_audio_group,
"Music volume from 0.0 to 1.0") );
424 "Number of steps for volume adjustment") );
429 "Race Setup Settings") );
434 "Default number of karts. -1 means use all") );
437 &m_race_setup_group,
"Default number of laps.") );
440 &m_race_setup_group,
"Default direction of GP tracks. 0=default, 1=no reverse, 2=all reverse, 3=Random") );
443 &m_race_setup_group,
"Default number of tracks for random GP.") );
446 &m_race_setup_group,
"Time limit in ffa mode."));
449 &m_race_setup_group,
"Use ffa mode instead of 3 strikes battle."));
452 &m_race_setup_group,
"Time limit in lap trial mode."));
455 &m_race_setup_group,
"Default number of goals in soccer mode.") );
458 &m_race_setup_group,
"Default team in soccer mode for single player.") );
461 &m_race_setup_group,
"Time limit in soccer mode.") );
464 &m_race_setup_group,
"Enable time limit in soccer mode.") );
467 &m_race_setup_group,
"Enable random location of items in an arena.") );
471 "Default race difficulty. 0=easy, 1=medium, 2=hard, 3=supertux") );
475 "Game mode. 0=standard, 1=time trial, 2=follow "
476 "the leader, 3=3 strikes, 4=easter egg hunt, "
477 "5=soccer, 6=ghost replay") );
480 "Kart to select by default (the last used kart)") );
483 "Last selected kart group") );
486 &m_race_setup_group,
"Number of red AI karts in soccer mode.") );
489 &m_race_setup_group,
"Number of blue AI karts in soccer mode.") );
492 &m_race_setup_group,
"Show other karts' held powerups in race gui.") );
495 &m_race_setup_group,
"Show player list icon in soccer mode.") );
498 &m_race_setup_group,
"Always show online addon karts as tux when live join is on.") );
501 &m_race_setup_group,
"Randomize the position of the players at the start of a race. Doesn't apply to story mode.") );
506 "Settings for the wiimote") );
510 "At what raw input value maximum steering is reached (between 1 and 25).") );
515 "A weight applied to the linear component of mapping wiimote angle to steering angle"));
520 "A weight applied to the square component of mapping wiimote angle to steering angle"));
525 "A weight applied to the asin component of mapping wiimote angle to steering angle"));
530 "A weight applied to the sin component of mapping wiimote angle to steering angle"));
535 "Settings for the multitouch device") );
540 "Enable multitouch support: 0 = disabled, 1 = if available, 2 = enabled") );
545 "Enable multitouch race GUI"));
550 "Draw steering wheel on right side.") );
555 "Auto acceleration for multitouch controls.") );
560 "Multitouch mode: 0 = undefined, 1 = steering wheel, 2 = accelerometer, 3 = gyroscope"));
565 "A parameter in range [0, 0.5] that determines the zone that is "
566 "considered as centered in steering button."));
571 "A parameter in range [0, 1.0] that determines the sensitivity for x axis."));
576 "A parameter in range [0, 1.0] that determines the sensitivity for y axis."));
581 "A parameter that determines general accelerometer sensitivity."));
586 "A parameter in range [0.5, 1.5] that determines the scale of the "
587 "multitouch interface."));
592 "STK screen keyboard status: 0 = disabled, 1 = enabled") );
597 "Order karts start in GP") );
601 "Starting order from most to least points (true) or other "
602 "way around (false)") );
606 "Always put the player at the back or not (Bully mode).") );
609 "Directory with additional GP's."));
617 "Screen/window real width in pixels before high dpi is applied") );
620 "Screen/window real height in pixels before high dpi is applied") );
623 "Screen/window width in pixels, this value should not be edited") );
626 "Screen/window height in pixels, this value should not be edited") );
632 &m_video_group,
"Previous real screen/window width") );
635 &m_video_group,
"Previous real screen/window height") );
646 &m_video_group,
"If remember_window_location is true") );
649 &m_video_group,
"If remember_window_location is true") );
653 &m_video_group,
"Display frame per seconds") );
656 &m_video_group,
"Display the story mode timer") );
659 &m_video_group,
"Display the speedrun timer") );
662 &m_video_group,
"Maximum fps, should be at least 60") );
665 &m_video_group,
"Force OpenGL 2 context, even if OpenGL 3 is available."));
668 &m_video_group,
"When playing a non-square amount of players (e.g. 2),"
669 " should it split horizontally (top/bottom)"));
672 &m_video_group,
"Enable Texture Compression"));
679 &m_video_group,
"Enable high definition textures. Bit flag: "
680 "bit 0 = enabled/disabled; bit 1 = set by user/set as default"));
683 &m_video_group,
"Enable Glow"));
686 &m_video_group,
"Enable Bloom"));
689 &m_video_group,
"Enable Light Shafts"));
692 &m_video_group,
"Enable Dynamic Lights"));
695 &m_video_group,
"Enable Depth of Field"));
698 &m_video_group,
"Determines if popup message about too old drivers should be displayed."));
701 &m_video_group,
"Custom value for RTTs resolution. "
702 "Value should be smaller or equal to 1.0"));
705 &m_video_group,
"Max texture size when high definition textures are "
709 &m_video_group,
"Enable screen space reflection"));
712 &m_video_group,
"Generate mipmap for textures using "
713 "high quality method with SSE"));
716 &m_video_group,
"The size of fonts. 0 is the smallest and 6 is the biggest") );
718 #if defined(_IRR_COMPILE_WITH_DIRECT3D_9_) && defined(_M_ARM)
721 &m_video_group,
"Render video driver to use, at the moment opengl, vulkan or directx9 is supported.") );
725 &m_video_group,
"Render video driver to use, at the moment opengl, vulkan or directx9 is supported.") );
728 #if defined(MOBILE_STK)
731 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for vulkan device"));
735 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for vulkan device"));
740 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for non-ge device"));
745 "Recording Settings"));
749 &m_recording_group,
"Limit game framerate not beyond the fps of"
750 " recording video."));
753 &m_recording_group,
"Specify the video for record, which is the enum"
754 " of VideoFormat in libopenglrecorder. It will"
755 " auto fallback to MJPEG if libopenglrecorder was"
756 " not compiled with such video encoder."));
760 &m_recording_group,
"Specify the bitrate for audio"));
764 &m_recording_group,
"Specify the bitrate for video"));
768 &m_recording_group,
"Specify the jpg compression level of recorder"));
772 &m_recording_group,
"Specify the fps of recording video"));
776 PARAM_PREFIX
bool m_no_high_scores PARAM_DEFAULT(
false);
779 PARAM_PREFIX
bool m_unit_testing PARAM_DEFAULT(
false);
782 PARAM_PREFIX
bool m_gamepad_debug PARAM_DEFAULT(
false );
785 PARAM_PREFIX
bool m_keyboard_debug PARAM_DEFAULT(
false);
788 PARAM_PREFIX
bool m_wiimote_debug PARAM_DEFAULT(
false );
791 PARAM_PREFIX
bool m_gamepad_visualisation PARAM_DEFAULT(
false );
795 PARAM_PREFIX
bool m_material_debug PARAM_DEFAULT(
false );
798 PARAM_PREFIX
int m_track_debug PARAM_DEFAULT(
false );
801 PARAM_PREFIX
bool m_check_debug PARAM_DEFAULT(
false );
804 PARAM_PREFIX
bool m_physics_debug PARAM_DEFAULT(
false );
807 PARAM_PREFIX
bool m_fps_debug PARAM_DEFAULT(
false);
810 PARAM_PREFIX
bool m_arena_ai_stats PARAM_DEFAULT(
false);
813 PARAM_PREFIX
bool m_slipstream_debug PARAM_DEFAULT(
false );
816 PARAM_PREFIX
bool m_ftl_debug PARAM_DEFAULT(
false );
819 PARAM_PREFIX
bool m_tutorial_debug PARAM_DEFAULT(
false );
823 PARAM_PREFIX
int m_verbosity PARAM_DEFAULT( 0 );
825 PARAM_PREFIX
bool m_no_start_screen PARAM_DEFAULT(
false );
827 PARAM_PREFIX
bool m_race_now PARAM_DEFAULT(
false );
829 PARAM_PREFIX
int m_default_keyboard PARAM_DEFAULT( -1 );
831 PARAM_PREFIX
int m_default_gamepad PARAM_DEFAULT( -1 );
833 PARAM_PREFIX
bool m_enforce_current_player PARAM_DEFAULT(
false );
835 PARAM_PREFIX
bool m_enable_sound PARAM_DEFAULT(
true );
839 PARAM_PREFIX
bool m_rendering_debug PARAM_DEFAULT(
false );
842 PARAM_PREFIX
bool m_profiler_enabled PARAM_DEFAULT(
false );
844 PARAM_PREFIX
bool m_disable_addon_karts PARAM_DEFAULT(
false );
846 PARAM_PREFIX
bool m_disable_addon_tracks PARAM_DEFAULT(
false );
848 PARAM_PREFIX
bool m_benchmark PARAM_DEFAULT(
false );
853 "Wan server bookmarks",
854 {{
"server-bookmarks",
"server-name",
"last-online" }}, {}));
858 "Wan server bookmarks order",
859 {{
"server-bookmarks",
"server-name",
"id" }}, {}));
863 "Last 5 IP addresses that user entered",
864 {{
"server-address",
"address",
"last-connection" }}, {}));
870 "The stun servers that will be used to know the public address "
871 "(ipv4 only) with port", {{
"stun-server",
"address",
"ping" }},
873 {
"stunv4.linuxreviews.org:3478", 0u },
874 {
"stunv4.7.supertuxkart.net:3478", 0u },
875 {
"stunv4.8.supertuxkart.net:3478", 0u }
881 "The stun servers that will be used to know the public address "
882 "(including ipv6) with port", {{
"stun-server",
"address",
"ping" }},
884 {
"stun.linuxreviews.org:3478", 0u },
885 {
"stun.supertuxkart.net:3478", 0u },
886 {
"stun.stunprotocol.org:3478", 0u }
894 &m_network_group,
"The default value of enable splitscreen checkbox "
895 "in online screen."));
898 &m_network_group,
"If all network packets should be logged"));
901 &m_network_group,
"Use random port for client connection "
902 "(check stk_config.xml for default value)"));
905 &m_network_group,
"Use random port for server connection "
906 "(check stk_config.xml for default value)"));
909 &m_network_group,
"Enable chatting in networking lobby, if off than "
910 "no chat message will be displayed from any players."));
913 &m_network_group,
"Enable chatting during races."));
916 &m_network_group,
"Enable IPv6 LAN server discovery."));
919 &m_network_group,
"Maximum number of players on the server "
920 "(for gui server creation."));
923 &m_network_group,
"Max time difference tolerance (in ms) to "
924 "synchronize timer with server."));
927 &m_network_group,
"Default IP type of this machine, "
928 "0 detect every time, 1 IPv4, 2 IPv6, 3 IPv6 NAT64, 4 Dual stack."));
931 &m_network_group,
"Show grand prix option in create LAN server "
932 "screen, false will show AI option."));
935 &m_network_group,
"Show grand prix option in create WAN server "
936 "screen, false will show AI option."));
941 "The Number of karts per gamemode.",
942 {{
"gamemode-list",
"gamemode",
"num-karts" }},
956 "Graphics Quality Settings") );
960 &m_graphics_quality,
"Particles effects: 0 disabled, 1 only important, 2 enabled") );
965 &m_graphics_quality,
"Christmas hats: 0 use current date, 1 always on, 2 always off") );
970 &m_graphics_quality,
"Easter Bunny Ears: 0 use current date, 1 always on, 2 always off"));
974 "animated-characters", &m_graphics_quality,
975 "Whether to display animated characters") );
979 "geometry-level", &m_graphics_quality,
980 "Geometry quality 0=lowest level, no details; "
981 "5=everything is displayed") );
986 "Quality of anisotropic filtering (usual values include 2-4-8-16; 0 to disable)") );
991 "Swap interval for vsync: 0 = disabled, 1 = full") );
994 "motionblur_enabled", &m_graphics_quality,
995 "Whether motion blur should be enabled") );
998 "mlaa", &m_graphics_quality,
999 "Whether MLAA anti-aliasing should be enabled") );
1002 "ssao", &m_graphics_quality,
1003 "Enable Screen Space Ambient Occlusion") );
1006 "light_scatter", &m_graphics_quality,
1007 "Enable light scattering shaders") );
1010 "shadows_resolution", &m_graphics_quality,
1011 "Shadow resolution (0 = disabled") );
1014 "pcss", &m_graphics_quality,
1015 "Enable Percentage Closer Soft Shadows") );
1018 "Degraded_IBL", &m_graphics_quality,
1019 "Disable specular IBL"));
1033 "Camera settings for player.") );
1038 "Distance between kart and camera"));
1043 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1048 "The strength of smoothness of the position of the camera"));
1053 "The strength of smoothness of the rotation of the camera"));
1058 "Distance between kart and camera (reverse)"));
1063 "Angle between camera and plane of kart (pitch) when the camera is pointing backwards. This is usually larger than the forward-up-angle, since the kart itself otherwise obstricts too much of the view"));
1068 "Focal distance (single player)"));
1072 "Use ball camera in soccer mode, instead of reverse") );
1077 "The current used camera. 0=Custom; 1=Standard; 2=Drone chase") );
1082 "standard-camera-settings",
1083 "Standard camera settings for player.") );
1087 &m_standard_camera_settings,
1088 "Distance between kart and camera"));
1092 &m_standard_camera_settings,
1093 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1097 &m_standard_camera_settings,
1098 "The strength of smoothness of the position of the camera"));
1102 &m_standard_camera_settings,
1103 "The strength of smoothness of the rotation of the camera"));
1107 &m_standard_camera_settings,
1108 "Distance between kart and camera (reverse)"));
1112 &m_standard_camera_settings,
1113 "Angle between camera and plane of kart (pitch) when the camera is pointing backwards. This is usually larger than the forward-up-angle, since the kart itself otherwise obstricts too much of the view"));
1117 &m_standard_camera_settings,
1118 "Focal distance (single player)"));
1122 &m_standard_camera_settings,
1123 "Use ball camera in soccer mode, instead of reverse"));
1128 "drone-camera-settings",
1129 "Drone chase camera settings for player.") );
1133 &m_drone_camera_settings,
1134 "Distance between kart and camera"));
1138 &m_drone_camera_settings,
1139 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1143 &m_drone_camera_settings,
1144 "The strength of smoothness of the position of the camera"));
1148 &m_drone_camera_settings,
1149 "The strength of smoothness of the rotation of the camera"));
1153 &m_drone_camera_settings,
1154 "Distance between kart and camera (reverse)"));
1158 &m_drone_camera_settings,
1159 "Angle between camera and plane of kart (pitch) when the camera is pointing backwards. This is usually larger than the forward-up-angle, since the kart itself otherwise obstricts too much of the view"));
1163 &m_drone_camera_settings,
1164 "Focal distance (single player)"));
1168 &m_drone_camera_settings,
1169 "Use ball camera in soccer mode, instead of reverse"));
1174 "saved-camera-settings",
1175 "Saved custom camera settings for player.") );
1179 &m_saved_camera_settings,
1180 "Distance between kart and camera"));
1184 &m_saved_camera_settings,
1185 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1189 &m_saved_camera_settings,
1190 "The strength of smoothness of the position of the camera"));
1194 &m_saved_camera_settings,
1195 "The strength of smoothness of the rotation of the camera"));
1199 &m_saved_camera_settings,
1200 "Distance between kart and camera (reverse)"));
1204 &m_saved_camera_settings,
1205 "Angle between camera and plane of kart (pitch) when the camera is pointing backwards. This is usually larger than the forward-up-angle, since the kart itself otherwise obstricts too much of the view"));
1209 &m_saved_camera_settings,
1210 "Focal distance (single player)"));
1214 &m_saved_camera_settings,
1215 "Use ball camera in soccer mode, instead of reverse"));
1220 "(Debug) camera settings.") );
1225 "If the kart is driving backwards faster than this value,\n"
1226 "switch automatically to reverse camera (set to 0 to disable).") );
1231 "How fast the first person camera's direction speed changes when\n"
1232 "moving the mouse (means acceleration).") );
1237 "How fast the first person camera's direction can change.") );
1242 "How fast the first person camera's rotation speed changes.") );
1247 "How fast the first person camera can rotate.") );
1251 "Name of the .items file to use.") );
1255 "Name of the last track used.") );
1258 "Last selected track group") );
1262 "Discord Client ID (Set to -1 to disable)") );
1266 "If debug logging should be enabled for rich presence") );
1270 "Name of the skin to use") );
1275 "Minimap Setup Settings") );
1279 &m_minimap_setup_group,
"display: 0 bottom-left, 1 middle-right, 2 hidden, 3 center"));
1283 &m_minimap_setup_group,
"Size of the the minimap (480 = full screen height; scaled afterwards)") );
1287 &m_minimap_setup_group,
"The size of the icons for the AI karts on the minimap.") );
1291 &m_minimap_setup_group,
"The size of the icons for the player kart.") );
1296 "PowerUp Setup Settings") );
1300 &m_powerup_setup_group,
"display: 0 center, 1 right side, 2 hidden (see karts' held powerups)"));
1303 &m_powerup_setup_group,
"Size of the powerup icon (scaled afterwards)") );
1308 "Everything related to spectator mode.") );
1312 "Distance between kart and camera.") );
1315 "Angle between ground, kart and camera.") );
1320 "Everything related to handicaps.") );
1325 "If handicapped users can be selected") );
1331 "Status of internet: 0 user "
1332 "wasn't asked, 1: allowed, 2: "
1337 "Everything related to hardware configuration.") );
1341 "Version of hardware report "
1342 "that was reported last") );
1345 "A random number to avoid duplicated reports.") );
1349 "hw-report-enabled",
1351 "If HW reports are enabled."));
1357 "Always show the login screen even if last player's session was saved."));
1363 "Addon and news related settings") );
1368 "Time news was updated last.") );
1373 "How often news should be updated.") );
1378 "How often all news messages "
1379 "have been displayed") );
1384 "Don't show important message "
1385 "with this or a lower id again") );
1390 "News before this id has been "
1391 "shown once so no red dot") );
1396 "Time addon-list was updated last.") );
1401 "Latest approved addon time.") );
1405 "Which language to use (language code or 'system')") );
1409 "Whether to enable track debugging features") );
1413 "Whether to hide the GUI (artist debug mode)"));
1417 "Enable all karts and tracks: 0 = disabled, "
1418 "1 = everything except final race, 2 = everything") );
1422 "Allows one to set commandline args in config file") );
1425 PARAM_PREFIX std::vector<std::string> m_blacklist_res;
1431 enum { LOG_MEMORY = 0x0001,
1433 LOG_ADDONS = 0x0004,
1435 LOG_FLYABLE = 0x0010,
1465 irr::core::stringw m_warning;
1467 static const int m_current_config_version;
1478 const irr::core::stringw& getWarning() {
return m_warning; }
1479 void resetWarning() { m_warning=
""; }
1480 void setWarning(irr::core::stringw& warning) { m_warning=warning; }
Definition: user_config.hpp:296
Definition: user_config.hpp:329
Definition: user_config.hpp:85
void writeInner(std::stringstream &stream, int level=0) const
Writes an inner node.
Definition: user_config.cpp:129
Definition: user_config.hpp:194
ATM only map with 1 key and 1 value is supported.
Definition: user_config.hpp:110
Utility class, you can inherit from this class to disallow the assignment operator and copy construct...
Definition: no_copy.hpp:26
Class for managing player profiles (name, usage frequency, etc.).
Definition: player_profile.hpp:55
Definition: ptr_vector.hpp:44
Class for managing saved Grand-Prix's A list of all possible resumable GP's is stored in the user con...
Definition: saved_grand_prix.hpp:39
Definition: user_config.hpp:256
Definition: user_config.hpp:230
utility class used to write wide (UTF-16 or UTF-32, depending of size of wchar_t) XML files
Definition: utf_writer.hpp:35
The base of a set of small utilities to enable quickly adding/removing stuff to/from config painlessl...
Definition: user_config.hpp:68
virtual void writeInner(std::stringstream &stream, int level=0) const
Writes an inner node.
Definition: user_config.cpp:72
Class for managing general STK user configuration data.
Definition: user_config.hpp:1460
std::string m_filename
Filename of the user config file.
Definition: user_config.hpp:1464
void saveConfig()
Write settings to config file.
Definition: user_config.cpp:729
UserConfig()
Create the user config object; does not actually load it, UserConfig::loadConfig needs to be called.
Definition: user_config.cpp:653
bool loadConfig()
Load configuration values from file.
Definition: user_config.cpp:669
utility class used to parse XML files
Definition: xml_node.hpp:48
Contains all parameters that are stored in the user's config file.
Definition: user_config.hpp:394
bool logAddons()
Returns true if the user want additional messages related to addons.
Definition: user_config.cpp:770
bool logFlyable()
Returns true if the user want additional debug info for flyables.
Definition: user_config.cpp:774
bool logGUI()
Returns true if the user want additional messages related to GUI.
Definition: user_config.cpp:766
PARAM_PREFIX PtrVector< SavedGrandPrix > m_saved_grand_prix_list
List of all saved GPs.
Definition: user_config.hpp:1428
bool logMemory()
Returns true if the user want additional messages for memory usage.
Definition: user_config.cpp:762
bool logMisc()
Returns true if the user want additional messages for general items.
Definition: user_config.cpp:778