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,
376 enum 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 395 #ifndef PARAM_DEFAULT 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 "Race Setup Settings") );
433 "Default number of karts. -1 means use all") );
436 &m_race_setup_group,
"Default number of laps.") );
439 &m_race_setup_group,
"Default direction of GP tracks. 0=default, 1=no reverse, 2=all reverse, 3=Random") );
442 &m_race_setup_group,
"Default number of tracks for random GP.") );
445 &m_race_setup_group,
"Time limit in ffa mode."));
448 &m_race_setup_group,
"Use ffa mode instead of 3 strikes battle."));
451 &m_race_setup_group,
"Time limit in lap trial mode."));
454 &m_race_setup_group,
"Default number of goals in soccer mode.") );
457 &m_race_setup_group,
"Default team in soccer mode for single player.") );
460 &m_race_setup_group,
"Time limit in soccer mode.") );
463 &m_race_setup_group,
"Enable time limit in soccer mode.") );
466 &m_race_setup_group,
"Enable random location of items in an arena.") );
470 "Default race difficulty. 0=easy, 1=medium, 2=hard, 3=supertux") );
474 "Game mode. 0=standard, 1=time trial, 2=follow " 475 "the leader, 3=3 strikes, 4=easter egg hunt, " 476 "5=soccer, 6=ghost replay") );
479 "Kart to select by default (the last used kart)") );
482 "Last selected kart group") );
485 &m_race_setup_group,
"Number of red AI karts in soccer mode.") );
488 &m_race_setup_group,
"Number of blue AI karts in soccer mode.") );
491 &m_race_setup_group,
"Show other karts' held powerups in race gui.") );
494 &m_race_setup_group,
"Show player list icon in soccer mode.") );
497 &m_race_setup_group,
"Always show online addon karts as tux when live join is on.") );
500 &m_race_setup_group,
"Randomize the position of the players at the start of a race. Doesn't apply to story mode.") );
505 "Settings for the wiimote") );
509 "At what raw input value maximum steering is reached (between 1 and 25).") );
514 "A weight applied to the linear component of mapping wiimote angle to steering angle"));
519 "A weight applied to the square component of mapping wiimote angle to steering angle"));
524 "A weight applied to the asin component of mapping wiimote angle to steering angle"));
529 "A weight applied to the sin component of mapping wiimote angle to steering angle"));
534 "Settings for the multitouch device") );
539 "Enable multitouch support: 0 = disabled, 1 = if available, 2 = enabled") );
544 "Enable multitouch race GUI"));
549 "Draw steering wheel on right side.") );
554 "Auto acceleration for multitouch controls.") );
559 "Multitouch mode: 0 = undefined, 1 = steering wheel, 2 = accelerometer, 3 = gyroscope"));
564 "A parameter in range [0, 0.5] that determines the zone that is " 565 "considered as centered in steering button."));
570 "A parameter in range [0, 1.0] that determines the sensitivity for x axis."));
575 "A parameter in range [0, 1.0] that determines the sensitivity for y axis."));
580 "A parameter that determines general accelerometer sensitivity."));
585 "A parameter in range [0.5, 1.5] that determines the scale of the " 586 "multitouch interface."));
591 "STK screen keyboard status: 0 = disabled, 1 = enabled") );
596 "Order karts start in GP") );
600 "Starting order from most to least points (true) or other " 601 "way around (false)") );
605 "Always put the player at the back or not (Bully mode).") );
608 "Directory with additional GP's."));
616 "Screen/window width in pixels") );
619 "Screen/window height in pixels") );
625 &m_video_group,
"Previous screen/window width") );
628 &m_video_group,
"Previous screen/window height") );
639 &m_video_group,
"If remember_window_location is true") );
642 &m_video_group,
"If remember_window_location is true") );
646 &m_video_group,
"Display frame per seconds") );
649 &m_video_group,
"Display the story mode timer") );
652 &m_video_group,
"Display the speedrun timer") );
655 &m_video_group,
"Maximum fps, should be at least 60") );
658 &m_video_group,
"Force OpenGL 2 context, even if OpenGL 3 is available."));
661 &m_video_group,
"When playing a non-square amount of players (e.g. 2)," 662 " should it split horizontally (top/bottom)"));
665 &m_video_group,
"Enable Texture Compression"));
672 &m_video_group,
"Enable high definition textures. Bit flag: " 673 "bit 0 = enabled/disabled; bit 1 = set by user/set as default"));
676 &m_video_group,
"Enable Glow"));
679 &m_video_group,
"Enable Bloom"));
682 &m_video_group,
"Enable Light Shafts"));
685 &m_video_group,
"Enable Dynamic Lights"));
688 &m_video_group,
"Enable Depth of Field"));
691 &m_video_group,
"Determines if popup message about too old drivers should be displayed."));
694 &m_video_group,
"Custom value for RTTs resolution. " 695 "Value should be smaller or equal to 1.0"));
698 &m_video_group,
"Max texture size when high definition textures are " 703 &m_video_group,
"Generate mipmap for textures using " 704 "high quality method with SSE"));
707 &m_video_group,
"The size of fonts. 0 is the smallest and 6 is the biggest") );
709 #if defined(_IRR_COMPILE_WITH_DIRECT3D_9_) && defined(_M_ARM64) 712 &m_video_group,
"Render video driver to use, at the moment gl or directx9 is supported.") );
716 &m_video_group,
"Render video driver to use, at the moment gl or directx9 is supported.") );
722 "Recording Settings"));
726 &m_recording_group,
"Limit game framerate not beyond the fps of" 727 " recording video."));
730 &m_recording_group,
"Specify the video for record, which is the enum" 731 " of VideoFormat in libopenglrecorder. It will" 732 " auto fallback to MJPEG if libopenglrecorder was" 733 " not compiled with such video encoder."));
737 &m_recording_group,
"Specify the bitrate for audio"));
741 &m_recording_group,
"Specify the bitrate for video"));
745 &m_recording_group,
"Specify the jpg compression level of recorder"));
749 &m_recording_group,
"Specify the fps of recording video"));
753 PARAM_PREFIX
bool m_no_high_scores PARAM_DEFAULT(
false);
756 PARAM_PREFIX
bool m_unit_testing PARAM_DEFAULT(
false);
759 PARAM_PREFIX
bool m_gamepad_debug PARAM_DEFAULT(
false );
762 PARAM_PREFIX
bool m_keyboard_debug PARAM_DEFAULT(
false);
765 PARAM_PREFIX
bool m_wiimote_debug PARAM_DEFAULT(
false );
768 PARAM_PREFIX
bool m_gamepad_visualisation PARAM_DEFAULT(
false );
772 PARAM_PREFIX
bool m_material_debug PARAM_DEFAULT(
false );
775 PARAM_PREFIX
int m_track_debug PARAM_DEFAULT(
false );
778 PARAM_PREFIX
bool m_check_debug PARAM_DEFAULT(
false );
781 PARAM_PREFIX
bool m_physics_debug PARAM_DEFAULT(
false );
784 PARAM_PREFIX
bool m_fps_debug PARAM_DEFAULT(
false);
787 PARAM_PREFIX
bool m_arena_ai_stats PARAM_DEFAULT(
false);
790 PARAM_PREFIX
bool m_slipstream_debug PARAM_DEFAULT(
false );
793 PARAM_PREFIX
bool m_ftl_debug PARAM_DEFAULT(
false );
796 PARAM_PREFIX
bool m_tutorial_debug PARAM_DEFAULT(
false );
800 PARAM_PREFIX
int m_verbosity PARAM_DEFAULT( 0 );
802 PARAM_PREFIX
bool m_no_start_screen PARAM_DEFAULT(
false );
804 PARAM_PREFIX
bool m_race_now PARAM_DEFAULT(
false );
806 PARAM_PREFIX
bool m_enforce_current_player PARAM_DEFAULT(
false );
808 PARAM_PREFIX
bool m_enable_sound PARAM_DEFAULT(
true );
812 PARAM_PREFIX
bool m_rendering_debug PARAM_DEFAULT(
false );
815 PARAM_PREFIX
bool m_profiler_enabled PARAM_DEFAULT(
false );
817 PARAM_PREFIX
bool m_disable_addon_karts PARAM_DEFAULT(
false );
819 PARAM_PREFIX
bool m_disable_addon_tracks PARAM_DEFAULT(
false );
824 "Wan server bookmarks",
825 {{
"server-bookmarks",
"server-name",
"last-online" }}, {}));
829 "Last 5 IP addresses that user entered",
830 {{
"server-address",
"address",
"last-connection" }}, {}));
836 "The stun servers that will be used to know the public address " 837 "(ipv4 only) with port", {{
"stun-server",
"address",
"ping" }},
839 {
"stunv4.linuxreviews.org:3478", 0u },
840 {
"stunv4.7.supertuxkart.net:3478", 0u },
841 {
"stunv4.8.supertuxkart.net:3478", 0u }
847 "The stun servers that will be used to know the public address " 848 "(including ipv6) with port", {{
"stun-server",
"address",
"ping" }},
850 {
"stun.linuxreviews.org:3478", 0u },
851 {
"stun.supertuxkart.net:3478", 0u },
852 {
"stun.stunprotocol.org:3478", 0u }
860 &m_network_group,
"The default value of enable splitscreen checkbox " 861 "in online screen."));
864 &m_network_group,
"If all network packets should be logged"));
867 &m_network_group,
"Use random port for client connection " 868 "(check stk_config.xml for default value)"));
871 &m_network_group,
"Use random port for server connection " 872 "(check stk_config.xml for default value)"));
875 &m_network_group,
"Enable chatting in networking lobby, if off than " 876 "no chat message will be displayed from any players."));
879 &m_network_group,
"Enable chatting during races."));
882 &m_network_group,
"Enable IPv6 LAN server discovery."));
885 &m_network_group,
"Maximum number of players on the server " 886 "(for gui server creation."));
889 &m_network_group,
"Max time difference tolerance (in ms) to " 890 "synchronize timer with server."));
893 &m_network_group,
"Default IP type of this machine, " 894 "0 detect every time, 1 IPv4, 2 IPv6, 3 IPv6 NAT64, 4 Dual stack."));
897 &m_network_group,
"Show grand prix option in create LAN server " 898 "screen, false will show AI option."));
901 &m_network_group,
"Show grand prix option in create WAN server " 902 "screen, false will show AI option."));
907 "The Number of karts per gamemode.",
908 {{
"gamemode-list",
"gamemode",
"num-karts" }},
922 "Graphics Quality Settings") );
926 &m_graphics_quality,
"Particles effects: 0 disabled, 1 only important, 2 enabled") );
931 &m_graphics_quality,
"Christmas hats: 0 use current date, 1 always on, 2 always off") );
936 &m_graphics_quality,
"Easter Bunny Ears: 0 use current date, 1 always on, 2 always off"));
940 "animated-characters", &m_graphics_quality,
941 "Whether to display animated characters") );
945 "geometry_level", &m_graphics_quality,
946 "Geometry quality 0=everything is displayed; " 947 "1=a few details are displayed; 2=lowest level, no details") );
952 "Quality of anisotropic filtering (usual values include 2-4-8-16; 0 to disable)") );
957 "Swap interval for vsync: 0 = disabled, 1 = full") );
960 "motionblur_enabled", &m_graphics_quality,
961 "Whether motion blur should be enabled") );
964 "mlaa", &m_graphics_quality,
965 "Whether MLAA anti-aliasing should be enabled") );
968 "ssao", &m_graphics_quality,
969 "Enable Screen Space Ambient Occlusion") );
972 "light_scatter", &m_graphics_quality,
973 "Enable light scattering shaders") );
976 "shadows_resolution", &m_graphics_quality,
977 "Shadow resolution (0 = disabled") );
980 "Degraded_IBL", &m_graphics_quality,
981 "Disable specular IBL"));
995 "Camera settings for player.") );
1000 "Distance between kart and camera"));
1005 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1010 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1015 "Distance between kart and camera (reverse)"));
1020 "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"));
1025 "Focal distance (single player)"));
1029 "Use ball camera in soccer mode, instead of reverse") );
1034 "The current used camera. 0=Custom; 1=Standard; 2=Drone chase") );
1039 "standard-camera-settings",
1040 "Standard camera settings for player.") );
1044 &m_standard_camera_settings,
1045 "Distance between kart and camera"));
1049 &m_standard_camera_settings,
1050 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1054 &m_standard_camera_settings,
1055 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1059 &m_standard_camera_settings,
1060 "Distance between kart and camera (reverse)"));
1064 &m_standard_camera_settings,
1065 "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"));
1069 &m_standard_camera_settings,
1070 "Focal distance (single player)"));
1074 &m_standard_camera_settings,
1075 "Use ball camera in soccer mode, instead of reverse"));
1080 "drone-camera-settings",
1081 "Drone chase camera settings for player.") );
1085 &m_drone_camera_settings,
1086 "Distance between kart and camera"));
1090 &m_drone_camera_settings,
1091 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1095 &m_drone_camera_settings,
1096 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1100 &m_drone_camera_settings,
1101 "Distance between kart and camera (reverse)"));
1105 &m_drone_camera_settings,
1106 "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"));
1110 &m_drone_camera_settings,
1111 "Focal distance (single player)"));
1115 &m_drone_camera_settings,
1116 "Use ball camera in soccer mode, instead of reverse"));
1121 "saved-camera-settings",
1122 "Saved custom camera settings for player.") );
1126 &m_saved_camera_settings,
1127 "Distance between kart and camera"));
1131 &m_saved_camera_settings,
1132 "Angle between camera and plane of kart (pitch) when the camera is pointing forward"));
1136 &m_saved_camera_settings,
1137 "if true, use smoothing (forward-up-angle become relative to speed) when pointing forward"));
1141 &m_saved_camera_settings,
1142 "Distance between kart and camera (reverse)"));
1146 &m_saved_camera_settings,
1147 "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"));
1151 &m_saved_camera_settings,
1152 "Focal distance (single player)"));
1156 &m_saved_camera_settings,
1157 "Use ball camera in soccer mode, instead of reverse"));
1162 "(Debug) camera settings.") );
1167 "If the kart is driving backwards faster than this value,\n" 1168 "switch automatically to reverse camera (set to 0 to disable).") );
1173 "How fast the first person camera's direction speed changes when\n" 1174 "moving the mouse (means acceleration).") );
1179 "How fast the first person camera's direction can change.") );
1184 "How fast the first person camera's rotation speed changes.") );
1189 "How fast the first person camera can rotate.") );
1193 "Name of the .items file to use.") );
1197 "Name of the last track used.") );
1200 "Last selected track group") );
1204 "Discord Client ID (Set to -1 to disable)") );
1208 "If debug logging should be enabled for rich presence") );
1212 "Name of the skin to use") );
1217 "Minimap Setup Settings") );
1221 &m_minimap_setup_group,
"display: 0 bottom-left, 1 middle-right, 2 hidden, 3 center"));
1225 &m_minimap_setup_group,
"Size of the the minimap (480 = full screen height; scaled afterwards)") );
1229 &m_minimap_setup_group,
"The size of the icons for the AI karts on the minimap.") );
1233 &m_minimap_setup_group,
"The size of the icons for the player kart.") );
1238 "PowerUp Setup Settings") );
1242 &m_powerup_setup_group,
"display: 0 center, 1 right side, 2 hidden (see karts' held powerups)"));
1245 &m_powerup_setup_group,
"Size of the powerup icon (scaled afterwards)") );
1250 "Everything related to spectator mode.") );
1254 "Distance between kart and camera.") );
1257 "Angle between ground, kart and camera.") );
1262 "Everything related to handicaps.") );
1267 "If handicapped users can be selected") );
1273 "Status of internet: 0 user " 1274 "wasn't asked, 1: allowed, 2: " 1279 "Everything related to hardware configuration.") );
1283 "Version of hardware report " 1284 "that was reported last") );
1287 "A random number to avoid duplicated reports.") );
1291 "hw-report-enabled",
1293 "If HW reports are enabled."));
1299 "Always show the login screen even if last player's session was saved."));
1305 "Addon and news related settings") );
1310 "Time news was updated last.") );
1315 "How often news should be updated.") );
1320 "How often all news messages " 1321 "have been displayed") );
1326 "Don't show important message " 1327 "with this or a lower id again") );
1332 "Time addon-list was updated last.") );
1337 "Latest approved addon time.") );
1341 "Which language to use (language code or 'system')") );
1345 "Whether to enable track debugging features") );
1349 "Whether to hide the GUI (artist debug mode)"));
1353 "Enable all karts and tracks: 0 = disabled, " 1354 "1 = everything except final race, 2 = everything") );
1358 "Allows one to set commandline args in config file") );
1361 PARAM_PREFIX std::vector<std::string> m_blacklist_res;
1367 enum { LOG_MEMORY = 0x0001,
1369 LOG_ADDONS = 0x0004,
1371 LOG_FLYABLE = 0x0010,
1401 irr::core::stringw m_warning;
1403 static const int m_current_config_version;
1414 const irr::core::stringw& getWarning() {
return m_warning; }
1415 void resetWarning() { m_warning=
""; }
1416 void setWarning(irr::core::stringw& warning) { m_warning=warning; }
Class for managing general STK user configuration data.
Definition: user_config.hpp:1395
std::string m_filename
Filename of the user config file.
Definition: user_config.hpp:1400
utility class used to write wide (UTF-16 or UTF-32, depending of size of wchar_t) XML files ...
Definition: utf_writer.hpp:34
Definition: user_config.hpp:229
Definition: user_config.hpp:193
Definition: user_config.hpp:328
bool logMemory()
Returns true if the user want additional messages for memory usage.
Definition: user_config.cpp:762
ATM only map with 1 key and 1 value is supported.
Definition: user_config.hpp:109
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:1364
Definition: user_config.hpp:84
Utility class, you can inherit from this class to disallow the assignment operator and copy construct...
Definition: no_copy.hpp:25
The base of a set of small utilities to enable quickly adding/removing stuff to/from config painlessl...
Definition: user_config.hpp:67
Class for managing player profiles (name, usage frequency, etc.).
Definition: player_profile.hpp:53
virtual void writeInner(std::stringstream &stream, int level=0) const
Writes an inner node.
Definition: user_config.cpp:72
Contains all parameters that are stored in the user's config file.
Definition: user_config.hpp:403
bool logFlyable()
Returns true if the user want additional debug info for flyables.
Definition: user_config.cpp:774
bool logAddons()
Returns true if the user want additional messages related to addons.
Definition: user_config.cpp:770
Definition: ptr_vector.hpp:43
utility class used to parse XML files
Definition: xml_node.hpp:47
Definition: user_config.hpp:295
bool logMisc()
Returns true if the user want additional messages for general items.
Definition: user_config.cpp:778
Definition: user_config.hpp:255
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:38