20#ifndef HEADER_USER_CONFIG_HPP
21#define HEADER_USER_CONFIG_HPP
48#include <IrrCompileConfig.h>
50using irr::core::stringc;
51using 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;
108template<
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; }
362enum AnimType {ANIMS_NONE = 0,
363 ANIMS_PLAYERS_ONLY = 1,
376enum MultitouchControls
378 MULTITOUCH_CONTROLS_UNDEFINED = 0,
379 MULTITOUCH_CONTROLS_STEERING_WHEEL = 1,
380 MULTITOUCH_CONTROLS_ACCELEROMETER = 2,
381 MULTITOUCH_CONTROLS_GYROSCOPE = 3,
392#define PARAM_PREFIX extern
396#define PARAM_DEFAULT(X)
412 "Whether sound effects are enabled or not (true or false)") );
416 "Whether musics are enabled or not (true or false)") );
419 &m_audio_group,
"Volume for sound effects, see openal AL_GAIN "
420 "for interpretation") );
423 &m_audio_group,
"Music volume from 0.0 to 1.0") );
428 "Number of steps for volume adjustment") );
433 "Race Setup Settings") );
438 "Default number of karts. -1 means use all") );
441 &m_race_setup_group,
"Default number of laps.") );
444 &m_race_setup_group,
"Default direction of GP tracks. 0=default, 1=no reverse, 2=all reverse, 3=Random") );
447 &m_race_setup_group,
"Default number of tracks for random GP.") );
450 &m_race_setup_group,
"Time limit in ffa mode."));
453 &m_race_setup_group,
"Use ffa mode instead of 3 strikes battle."));
456 &m_race_setup_group,
"Time limit in lap trial mode."));
459 &m_race_setup_group,
"Default number of goals in soccer mode.") );
462 &m_race_setup_group,
"Default team in soccer mode for single player.") );
465 &m_race_setup_group,
"Time limit in soccer mode.") );
468 &m_race_setup_group,
"Enable time limit in soccer mode.") );
471 &m_race_setup_group,
"Enable random location of items in an arena.") );
475 "Default race difficulty. 0=easy, 1=medium, 2=hard, 3=supertux") );
479 "Game mode. 0=standard, 1=time trial, 2=follow "
480 "the leader, 3=3 strikes, 4=easter egg hunt, "
481 "5=soccer, 6=ghost replay") );
484 "Kart to select by default (the last used kart)") );
487 "Last selected kart group") );
490 &m_race_setup_group,
"Number of red AI karts in soccer mode.") );
493 &m_race_setup_group,
"Number of blue AI karts in soccer mode.") );
496 &m_race_setup_group,
"Show other karts' held powerups in race gui.") );
499 &m_race_setup_group,
"Show player list icon in soccer mode.") );
502 &m_race_setup_group,
"Always show online addon karts as tux when live join is on.") );
505 &m_race_setup_group,
"Randomize the position of the players at the start of a race. Doesn't apply to story mode.") );
510 "Settings for the wiimote") );
514 "At what raw input value maximum steering is reached (between 1 and 25).") );
519 "A weight applied to the linear component of mapping wiimote angle to steering angle"));
524 "A weight applied to the square component of mapping wiimote angle to steering angle"));
529 "A weight applied to the asin component of mapping wiimote angle to steering angle"));
534 "A weight applied to the sin component of mapping wiimote angle to steering angle"));
539 "Settings for the multitouch device") );
544 "Enable multitouch support: 0 = disabled, 1 = if available, 2 = enabled") );
549 "Enable multitouch race GUI"));
554 "Draw steering wheel on right side.") );
559 "Auto acceleration for multitouch controls.") );
564 "Multitouch mode: 0 = undefined, 1 = steering wheel, 2 = accelerometer, 3 = gyroscope"));
569 "A parameter in range [0, 0.5] that determines the zone that is "
570 "considered as centered in steering button."));
575 "A parameter in range [0, 1.0] that determines the sensitivity for x axis."));
580 "A parameter in range [0, 1.0] that determines the sensitivity for y axis."));
585 "A parameter that determines general accelerometer sensitivity."));
590 "A parameter in range [0.5, 1.5] that determines the scale of the "
591 "multitouch interface."));
596 "STK screen keyboard status: 0 = disabled, 1 = enabled") );
601 "Order karts start in GP") );
605 "Starting order from most to least points (true) or other "
606 "way around (false)") );
610 "Always put the player at the back or not (Bully mode).") );
613 "Directory with additional GP's."));
621 "Screen/window real width in pixels before high dpi is applied") );
624 "Screen/window real height in pixels before high dpi is applied") );
627 "Screen/window width in pixels, this value should not be edited") );
630 "Screen/window height in pixels, this value should not be edited") );
636 &m_video_group,
"Previous real screen/window width") );
639 &m_video_group,
"Previous real screen/window height") );
650 &m_video_group,
"If remember_window_location is true") );
653 &m_video_group,
"If remember_window_location is true") );
657 &m_video_group,
"Display frame per seconds") );
660 &m_video_group,
"Display the story mode timer") );
663 &m_video_group,
"Display the speedrun timer") );
666 &m_video_group,
"Maximum fps, should be at least 60") );
669 &m_video_group,
"Force OpenGL 2 context, even if OpenGL 3 is available."));
672 &m_video_group,
"When playing a non-square amount of players (e.g. 2),"
673 " should it split horizontally (top/bottom)"));
676 &m_video_group,
"Enable Texture Compression"));
683 &m_video_group,
"Enable high definition textures. Bit flag: "
684 "bit 0 = enabled/disabled; bit 1 = set by user/set as default"));
687 &m_video_group,
"Enable Glow"));
690 &m_video_group,
"Enable Bloom"));
693 &m_video_group,
"Enable Light Shafts"));
696 &m_video_group,
"Enable Dynamic Lights"));
699 &m_video_group,
"Enable Depth of Field"));
702 &m_video_group,
"Determines if popup message about too old drivers should be displayed."));
705 &m_video_group,
"Custom value for RTTs resolution. "
706 "Value should be smaller or equal to 1.0"));
709 &m_video_group,
"Max texture size when high definition textures are "
714 &m_video_group,
"Generate mipmap for textures using "
715 "high quality method with SSE"));
718 &m_video_group,
"The size of fonts. 0 is the smallest and 6 is the biggest") );
720#if defined(_IRR_COMPILE_WITH_DIRECT3D_9_) && defined(_M_ARM)
723 &m_video_group,
"Render video driver to use, at the moment gl, vulkan or directx9 is supported.") );
727 &m_video_group,
"Render video driver to use, at the moment gl, vulkan or directx9 is supported.") );
730#if defined(MOBILE_STK)
733 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for vulkan device"));
737 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for vulkan device"));
742 &m_video_group,
"Use SDL_WINDOW_FULLSCREEN_DESKTOP for non-ge device"));
747 "Recording Settings"));
751 &m_recording_group,
"Limit game framerate not beyond the fps of"
752 " recording video."));
755 &m_recording_group,
"Specify the video for record, which is the enum"
756 " of VideoFormat in libopenglrecorder. It will"
757 " auto fallback to MJPEG if libopenglrecorder was"
758 " not compiled with such video encoder."));
762 &m_recording_group,
"Specify the bitrate for audio"));
766 &m_recording_group,
"Specify the bitrate for video"));
770 &m_recording_group,
"Specify the jpg compression level of recorder"));
774 &m_recording_group,
"Specify the fps of recording video"));
778 PARAM_PREFIX
bool m_no_high_scores PARAM_DEFAULT(
false);
781 PARAM_PREFIX
bool m_unit_testing PARAM_DEFAULT(
false);
784 PARAM_PREFIX
bool m_gamepad_debug PARAM_DEFAULT(
false );
787 PARAM_PREFIX
bool m_keyboard_debug PARAM_DEFAULT(
false);
790 PARAM_PREFIX
bool m_wiimote_debug PARAM_DEFAULT(
false );
793 PARAM_PREFIX
bool m_gamepad_visualisation PARAM_DEFAULT(
false );
797 PARAM_PREFIX
bool m_material_debug PARAM_DEFAULT(
false );
800 PARAM_PREFIX
int m_track_debug PARAM_DEFAULT(
false );
803 PARAM_PREFIX
bool m_check_debug PARAM_DEFAULT(
false );
806 PARAM_PREFIX
bool m_physics_debug PARAM_DEFAULT(
false );
809 PARAM_PREFIX
bool m_fps_debug PARAM_DEFAULT(
false);
812 PARAM_PREFIX
bool m_arena_ai_stats PARAM_DEFAULT(
false);
815 PARAM_PREFIX
bool m_slipstream_debug PARAM_DEFAULT(
false );
818 PARAM_PREFIX
bool m_ftl_debug PARAM_DEFAULT(
false );
821 PARAM_PREFIX
bool m_tutorial_debug PARAM_DEFAULT(
false );
825 PARAM_PREFIX
int m_verbosity PARAM_DEFAULT( 0 );
827 PARAM_PREFIX
bool m_no_start_screen PARAM_DEFAULT(
false );
829 PARAM_PREFIX
bool m_race_now PARAM_DEFAULT(
false );
831 PARAM_PREFIX
bool m_enforce_current_player PARAM_DEFAULT(
false );
833 PARAM_PREFIX
bool m_enable_sound PARAM_DEFAULT(
true );
837 PARAM_PREFIX
bool m_rendering_debug PARAM_DEFAULT(
false );
840 PARAM_PREFIX
bool m_profiler_enabled PARAM_DEFAULT(
false );
842 PARAM_PREFIX
bool m_disable_addon_karts PARAM_DEFAULT(
false );
844 PARAM_PREFIX
bool m_disable_addon_tracks PARAM_DEFAULT(
false );
849 "Wan server bookmarks",
850 {{
"server-bookmarks",
"server-name",
"last-online" }}, {}));
854 "Last 5 IP addresses that user entered",
855 {{
"server-address",
"address",
"last-connection" }}, {}));
861 "The stun servers that will be used to know the public address "
862 "(ipv4 only) with port", {{
"stun-server",
"address",
"ping" }},
864 {
"stunv4.linuxreviews.org:3478", 0u },
865 {
"stunv4.7.supertuxkart.net:3478", 0u },
866 {
"stunv4.8.supertuxkart.net:3478", 0u }
872 "The stun servers that will be used to know the public address "
873 "(including ipv6) with port", {{
"stun-server",
"address",
"ping" }},
875 {
"stun.linuxreviews.org:3478", 0u },
876 {
"stun.supertuxkart.net:3478", 0u },
877 {
"stun.stunprotocol.org:3478", 0u }
885 &m_network_group,
"The default value of enable splitscreen checkbox "
886 "in online screen."));
889 &m_network_group,
"If all network packets should be logged"));
892 &m_network_group,
"Use random port for client connection "
893 "(check stk_config.xml for default value)"));
896 &m_network_group,
"Use random port for server connection "
897 "(check stk_config.xml for default value)"));
900 &m_network_group,
"Enable chatting in networking lobby, if off than "
901 "no chat message will be displayed from any players."));
904 &m_network_group,
"Enable chatting during races."));
907 &m_network_group,
"Enable IPv6 LAN server discovery."));
910 &m_network_group,
"Maximum number of players on the server "
911 "(for gui server creation."));
914 &m_network_group,
"Max time difference tolerance (in ms) to "
915 "synchronize timer with server."));
918 &m_network_group,
"Default IP type of this machine, "
919 "0 detect every time, 1 IPv4, 2 IPv6, 3 IPv6 NAT64, 4 Dual stack."));
922 &m_network_group,
"Show grand prix option in create LAN server "
923 "screen, false will show AI option."));
926 &m_network_group,
"Show grand prix option in create WAN server "
927 "screen, false will show AI option."));
932 "The Number of karts per gamemode.",
933 {{
"gamemode-list",
"gamemode",
"num-karts" }},
947 "Graphics Quality Settings") );
951 &m_graphics_quality,
"Particles effects: 0 disabled, 1 only important, 2 enabled") );
956 &m_graphics_quality,
"Christmas hats: 0 use current date, 1 always on, 2 always off") );
961 &m_graphics_quality,
"Easter Bunny Ears: 0 use current date, 1 always on, 2 always off"));
965 "animated-characters", &m_graphics_quality,
966 "Whether to display animated characters") );
970 "geometry_level", &m_graphics_quality,
971 "Geometry quality 0=everything is displayed; "
972 "1=a few details are displayed; 2=lowest level, no details") );
977 "Quality of anisotropic filtering (usual values include 2-4-8-16; 0 to disable)") );
982 "Swap interval for vsync: 0 = disabled, 1 = full") );
985 "motionblur_enabled", &m_graphics_quality,
986 "Whether motion blur should be enabled") );
989 "mlaa", &m_graphics_quality,
990 "Whether MLAA anti-aliasing should be enabled") );
993 "ssao", &m_graphics_quality,
994 "Enable Screen Space Ambient Occlusion") );
997 "light_scatter", &m_graphics_quality,
998 "Enable light scattering shaders") );
1001 "shadows_resolution", &m_graphics_quality,
1002 "Shadow resolution (0 = disabled") );
1005 "Degraded_IBL", &m_graphics_quality,
1006 "Disable specular IBL"));
1020 "Camera settings for player.") );
1025 "Distance between kart and camera"));
1030 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1035 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1040 "Distance between kart and camera (reverse)"));
1045 "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"));
1050 "Focal distance (single player)"));
1054 "Use ball camera in soccer mode, instead of reverse") );
1059 "The current used camera. 0=Custom; 1=Standard; 2=Drone chase") );
1064 "standard-camera-settings",
1065 "Standard camera settings for player.") );
1069 &m_standard_camera_settings,
1070 "Distance between kart and camera"));
1074 &m_standard_camera_settings,
1075 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1079 &m_standard_camera_settings,
1080 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1084 &m_standard_camera_settings,
1085 "Distance between kart and camera (reverse)"));
1089 &m_standard_camera_settings,
1090 "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"));
1094 &m_standard_camera_settings,
1095 "Focal distance (single player)"));
1099 &m_standard_camera_settings,
1100 "Use ball camera in soccer mode, instead of reverse"));
1105 "drone-camera-settings",
1106 "Drone chase camera settings for player.") );
1110 &m_drone_camera_settings,
1111 "Distance between kart and camera"));
1115 &m_drone_camera_settings,
1116 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1120 &m_drone_camera_settings,
1121 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1125 &m_drone_camera_settings,
1126 "Distance between kart and camera (reverse)"));
1130 &m_drone_camera_settings,
1131 "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"));
1135 &m_drone_camera_settings,
1136 "Focal distance (single player)"));
1140 &m_drone_camera_settings,
1141 "Use ball camera in soccer mode, instead of reverse"));
1146 "saved-camera-settings",
1147 "Saved custom camera settings for player.") );
1151 &m_saved_camera_settings,
1152 "Distance between kart and camera"));
1156 &m_saved_camera_settings,
1157 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1161 &m_saved_camera_settings,
1162 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1166 &m_saved_camera_settings,
1167 "Distance between kart and camera (reverse)"));
1171 &m_saved_camera_settings,
1172 "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"));
1176 &m_saved_camera_settings,
1177 "Focal distance (single player)"));
1181 &m_saved_camera_settings,
1182 "Use ball camera in soccer mode, instead of reverse"));
1187 "(Debug) camera settings.") );
1192 "If the kart is driving backwards faster than this value,\n"
1193 "switch automatically to reverse camera (set to 0 to disable).") );
1198 "How fast the first person camera's direction speed changes when\n"
1199 "moving the mouse (means acceleration).") );
1204 "How fast the first person camera's direction can change.") );
1209 "How fast the first person camera's rotation speed changes.") );
1214 "How fast the first person camera can rotate.") );
1218 "Name of the .items file to use.") );
1222 "Name of the last track used.") );
1225 "Last selected track group") );
1229 "Discord Client ID (Set to -1 to disable)") );
1233 "If debug logging should be enabled for rich presence") );
1237 "Name of the skin to use") );
1242 "Minimap Setup Settings") );
1246 &m_minimap_setup_group,
"display: 0 bottom-left, 1 middle-right, 2 hidden, 3 center"));
1250 &m_minimap_setup_group,
"Size of the the minimap (480 = full screen height; scaled afterwards)") );
1254 &m_minimap_setup_group,
"The size of the icons for the AI karts on the minimap.") );
1258 &m_minimap_setup_group,
"The size of the icons for the player kart.") );
1263 "PowerUp Setup Settings") );
1267 &m_powerup_setup_group,
"display: 0 center, 1 right side, 2 hidden (see karts' held powerups)"));
1270 &m_powerup_setup_group,
"Size of the powerup icon (scaled afterwards)") );
1275 "Everything related to spectator mode.") );
1279 "Distance between kart and camera.") );
1282 "Angle between ground, kart and camera.") );
1287 "Everything related to handicaps.") );
1292 "If handicapped users can be selected") );
1298 "Status of internet: 0 user "
1299 "wasn't asked, 1: allowed, 2: "
1304 "Everything related to hardware configuration.") );
1308 "Version of hardware report "
1309 "that was reported last") );
1312 "A random number to avoid duplicated reports.") );
1316 "hw-report-enabled",
1318 "If HW reports are enabled."));
1324 "Always show the login screen even if last player's session was saved."));
1330 "Addon and news related settings") );
1335 "Time news was updated last.") );
1340 "How often news should be updated.") );
1345 "How often all news messages "
1346 "have been displayed") );
1351 "Don't show important message "
1352 "with this or a lower id again") );
1357 "Time addon-list was updated last.") );
1362 "Latest approved addon time.") );
1366 "Which language to use (language code or 'system')") );
1370 "Whether to enable track debugging features") );
1374 "Whether to hide the GUI (artist debug mode)"));
1378 "Enable all karts and tracks: 0 = disabled, "
1379 "1 = everything except final race, 2 = everything") );
1383 "Allows one to set commandline args in config file") );
1386 PARAM_PREFIX std::vector<std::string> m_blacklist_res;
1392 enum { LOG_MEMORY = 0x0001,
1394 LOG_ADDONS = 0x0004,
1396 LOG_FLYABLE = 0x0010,
1426 irr::core::stringw m_warning;
1428 static const int m_current_config_version;
1439 const irr::core::stringw& getWarning() {
return m_warning; }
1440 void resetWarning() { m_warning=
""; }
1441 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:54
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:1421
std::string m_filename
Filename of the user config file.
Definition: user_config.hpp:1425
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:404
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:1389
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