2007-05-27 12:01:53 -04:00
|
|
|
// $Id$
|
|
|
|
//
|
|
|
|
// SuperTuxKart - a fun racing game with go-kart
|
|
|
|
// Copyright (C) 2006 SuperTuxKart-Team
|
|
|
|
// Modelled after Supertux's configfile.h
|
|
|
|
//
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU General Public License
|
2008-06-12 20:53:52 -04:00
|
|
|
// as published by the Free Software Foundation; either version 3
|
2007-05-27 12:01:53 -04:00
|
|
|
// of the License, or (at your option) any later version.
|
|
|
|
//
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
// GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
|
|
// along with this program; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
2009-01-22 07:02:40 -05:00
|
|
|
#ifndef HEADER_USER_CONFIG_HPP
|
|
|
|
#define HEADER_USER_CONFIG_HPP
|
2007-05-27 12:01:53 -04:00
|
|
|
|
|
|
|
/* The following config versions are currently used:
|
2008-03-30 11:18:19 -04:00
|
|
|
0: the 0.2 release config file, without config-version number
|
2007-05-27 12:01:53 -04:00
|
|
|
(so that defaults to 0)
|
|
|
|
1: Removed singleWindowMenu, newKeyboardStyle, oldStatusDisplay,
|
|
|
|
added config-version number
|
|
|
|
Version 1 can read version 0 without any problems, so
|
|
|
|
SUPPORTED_CONFIG_VERSION is 0.
|
|
|
|
2: Changed to SDL keyboard bindings
|
2008-01-16 19:09:23 -05:00
|
|
|
3: Added username (userid was used for ALL players)
|
|
|
|
4: Added username per player
|
|
|
|
5: Enabled jumping, which might cause a problem with old
|
|
|
|
config files (which have an unused entry for jump defined
|
|
|
|
--> if a kart control for (say) player 2 uses the same key as
|
|
|
|
jump for player 1, this problem is not noticed in 0.3, but will
|
|
|
|
cause an undefined game action now
|
2008-03-31 19:15:33 -04:00
|
|
|
6: Added stick configurations.
|
2007-05-27 12:01:53 -04:00
|
|
|
*/
|
2010-03-21 21:21:49 -04:00
|
|
|
const int CURRENT_CONFIG_VERSION = 8;
|
2007-05-27 12:01:53 -04:00
|
|
|
|
|
|
|
#include <string>
|
2009-01-04 18:03:37 -05:00
|
|
|
#include <map>
|
2008-01-12 17:33:24 -05:00
|
|
|
#include <vector>
|
2009-06-20 21:10:43 -04:00
|
|
|
#include <fstream>
|
2009-06-11 06:00:43 -04:00
|
|
|
|
2010-11-11 15:59:49 -05:00
|
|
|
#include "irrlicht.h"
|
|
|
|
|
2010-05-01 19:40:50 -04:00
|
|
|
#include "utils/constants.hpp"
|
2010-09-08 07:39:19 -04:00
|
|
|
#include "utils/no_copy.hpp"
|
2009-06-21 14:55:12 -04:00
|
|
|
#include "utils/ptr_vector.hpp"
|
2007-05-27 12:01:53 -04:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
class XMLNode;
|
2009-07-18 11:32:54 -04:00
|
|
|
class PlayerProfile;
|
2007-05-27 12:01:53 -04:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
/**
|
|
|
|
* The base of a set of small utilities to enable quickly adding/removing stuff to/from config painlessly.
|
|
|
|
*/
|
2010-09-08 11:22:22 -04:00
|
|
|
class UserConfigParam
|
2007-05-27 12:01:53 -04:00
|
|
|
{
|
2009-06-21 12:15:27 -04:00
|
|
|
friend class GroupUserConfigParam;
|
2009-06-20 21:10:43 -04:00
|
|
|
protected:
|
2009-06-21 11:44:02 -04:00
|
|
|
std::string paramName, comment;
|
2008-03-31 19:15:33 -04:00
|
|
|
public:
|
2009-06-21 14:55:12 -04:00
|
|
|
virtual ~UserConfigParam();
|
2009-06-20 21:10:43 -04:00
|
|
|
virtual void write(std::ofstream& stream) const = 0;
|
2010-03-26 21:35:11 -04:00
|
|
|
virtual void findYourDataInAChildOf(const XMLNode* node) = 0;
|
|
|
|
virtual void findYourDataInAnAttributeOf(const XMLNode* node) = 0;
|
2009-06-21 12:15:27 -04:00
|
|
|
virtual std::string toString() const = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class GroupUserConfigParam : public UserConfigParam
|
|
|
|
{
|
|
|
|
std::vector<UserConfigParam*> m_children;
|
|
|
|
public:
|
|
|
|
GroupUserConfigParam(const char* name, const char* comment=NULL);
|
|
|
|
void write(std::ofstream& stream) const;
|
2010-03-26 21:35:11 -04:00
|
|
|
void findYourDataInAChildOf(const XMLNode* node);
|
|
|
|
void findYourDataInAnAttributeOf(const XMLNode* node);
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2009-06-21 12:15:27 -04:00
|
|
|
void addChild(UserConfigParam* child);
|
|
|
|
std::string toString() const;
|
2009-06-20 21:10:43 -04:00
|
|
|
};
|
2009-01-12 04:05:03 -05:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
class IntUserConfigParam : public UserConfigParam
|
|
|
|
{
|
2010-05-15 14:10:55 -04:00
|
|
|
int m_value;
|
|
|
|
int m_default_value;
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
public:
|
2010-05-15 14:10:55 -04:00
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
IntUserConfigParam(int defaultValue, const char* paramName, const char* comment = NULL);
|
2009-06-21 12:15:27 -04:00
|
|
|
IntUserConfigParam(int defaultValue, const char* paramName, GroupUserConfigParam* group, const char* comment = NULL);
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
void write(std::ofstream& stream) const;
|
2010-03-26 21:35:11 -04:00
|
|
|
void findYourDataInAChildOf(const XMLNode* node);
|
|
|
|
void findYourDataInAnAttributeOf(const XMLNode* node);
|
2009-06-21 12:15:27 -04:00
|
|
|
|
|
|
|
std::string toString() const;
|
2010-05-15 14:10:55 -04:00
|
|
|
void revertToDefaults() { m_value = m_default_value; }
|
|
|
|
|
|
|
|
operator int() const { return m_value; }
|
|
|
|
int& operator++(int dummy) { m_value++; return m_value; }
|
|
|
|
int& operator=(const int& v) { m_value = v; return m_value; }
|
|
|
|
int& operator=(const IntUserConfigParam& v) { m_value = (int)v; return m_value; }
|
2009-06-20 21:10:43 -04:00
|
|
|
};
|
2007-05-27 12:01:53 -04:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
class StringUserConfigParam : public UserConfigParam
|
|
|
|
{
|
2010-05-15 14:10:55 -04:00
|
|
|
std::string m_value;
|
|
|
|
std::string m_default_value;
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
public:
|
2010-05-15 14:10:55 -04:00
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
StringUserConfigParam(const char* defaultValue, const char* paramName, const char* comment = NULL);
|
2009-06-21 12:15:27 -04:00
|
|
|
StringUserConfigParam(const char* defaultValue, const char* paramName, GroupUserConfigParam* group, const char* comment = NULL);
|
|
|
|
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
void write(std::ofstream& stream) const;
|
2010-03-26 21:35:11 -04:00
|
|
|
void findYourDataInAChildOf(const XMLNode* node);
|
|
|
|
void findYourDataInAnAttributeOf(const XMLNode* node);
|
2009-06-21 12:15:27 -04:00
|
|
|
|
2010-05-15 14:10:55 -04:00
|
|
|
void revertToDefaults() { m_value = m_default_value; }
|
|
|
|
|
2009-06-21 12:15:27 -04:00
|
|
|
std::string toString() const;
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-05-15 14:10:55 -04:00
|
|
|
operator std::string() const { return m_value; }
|
|
|
|
std::string& operator=(const std::string& v) { m_value = v; return m_value; }
|
|
|
|
std::string& operator=(const StringUserConfigParam& v) { m_value = (std::string)v; return m_value; }
|
2009-06-22 20:46:13 -04:00
|
|
|
|
2010-05-15 14:10:55 -04:00
|
|
|
const char* c_str() const { return m_value.c_str(); }
|
2009-06-20 21:10:43 -04:00
|
|
|
};
|
2008-03-31 19:15:33 -04:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
class BoolUserConfigParam : public UserConfigParam
|
|
|
|
{
|
2010-05-15 14:10:55 -04:00
|
|
|
bool m_value;
|
|
|
|
bool m_default_value;
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
public:
|
2009-06-21 11:44:02 -04:00
|
|
|
BoolUserConfigParam(bool defaultValue, const char* paramName, const char* comment = NULL);
|
2009-06-21 12:15:27 -04:00
|
|
|
BoolUserConfigParam(bool defaultValue, const char* paramName, GroupUserConfigParam* group, const char* comment = NULL);
|
|
|
|
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
void write(std::ofstream& stream) const;
|
2010-03-26 21:35:11 -04:00
|
|
|
void findYourDataInAChildOf(const XMLNode* node);
|
|
|
|
void findYourDataInAnAttributeOf(const XMLNode* node);
|
2009-06-21 12:15:27 -04:00
|
|
|
|
|
|
|
std::string toString() const;
|
2010-05-15 14:10:55 -04:00
|
|
|
void revertToDefaults() { m_value = m_default_value; }
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-05-15 14:10:55 -04:00
|
|
|
operator bool() const { return m_value; }
|
|
|
|
bool& operator=(const bool& v) { m_value = v; return m_value; }
|
|
|
|
bool& operator=(const BoolUserConfigParam& v) { m_value = (bool)v; return m_value; }
|
2009-06-20 21:10:43 -04:00
|
|
|
};
|
2009-01-04 18:03:37 -05:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
class FloatUserConfigParam : public UserConfigParam
|
|
|
|
{
|
2010-05-15 14:10:55 -04:00
|
|
|
float m_value;
|
|
|
|
float m_default_value;
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
public:
|
2009-06-21 12:15:27 -04:00
|
|
|
FloatUserConfigParam(float defaultValue, const char* paramName, const char* comment = NULL);
|
|
|
|
FloatUserConfigParam(float defaultValue, const char* paramName, GroupUserConfigParam* group, const char* comment = NULL);
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
void write(std::ofstream& stream) const;
|
2010-03-26 21:35:11 -04:00
|
|
|
void findYourDataInAChildOf(const XMLNode* node);
|
|
|
|
void findYourDataInAnAttributeOf(const XMLNode* node);
|
2009-06-21 12:15:27 -04:00
|
|
|
|
|
|
|
std::string toString() const;
|
2010-05-15 14:10:55 -04:00
|
|
|
void revertToDefaults() { m_value = m_default_value; }
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-05-15 14:10:55 -04:00
|
|
|
operator float() const { return m_value; }
|
|
|
|
float& operator=(const float& v) { m_value = v; return m_value; }
|
|
|
|
float& operator=(const FloatUserConfigParam& v) { m_value = (float)v; return m_value; }
|
2009-06-20 21:10:43 -04:00
|
|
|
};
|
2009-01-22 07:02:40 -05:00
|
|
|
|
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
/**
|
|
|
|
* Using X-macros for setting-possible values is not very pretty, but it's a no-maintenance case :
|
|
|
|
* when you want to add a new parameter, just add one signle line below and everything else automagically works
|
|
|
|
* (including default value, saving to file, loading from file)
|
|
|
|
*/
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
#ifndef PARAM_PREFIX
|
|
|
|
#define PARAM_PREFIX extern
|
|
|
|
#endif
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
#ifndef PARAM_DEFAULT
|
|
|
|
#define PARAM_DEFAULT(X)
|
|
|
|
#endif
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2010-04-23 16:36:13 -04:00
|
|
|
/**
|
|
|
|
* \brief Contains all parameters that are stored in the user's config file
|
|
|
|
* \ingroup config
|
|
|
|
*/
|
2009-06-20 21:10:43 -04:00
|
|
|
namespace UserConfigParams
|
|
|
|
{
|
2009-06-21 11:44:02 -04:00
|
|
|
|
|
|
|
// ---- Audio
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_PREFIX GroupUserConfigParam m_audio_group
|
|
|
|
PARAM_DEFAULT( GroupUserConfigParam("Audio", "Audio Settings") );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_sfx
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "sfx_on", &m_audio_group, "Whether sound effects are enabled or not (true or false)") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_music
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "music_on", &m_audio_group, "Whether musics are enabled or not (true or false)") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX FloatUserConfigParam m_sfx_volume
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( FloatUserConfigParam(1.0, "sfx_volume", &m_audio_group, "Volume for sound effects, see openal AL_GAIN for interpretation") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX FloatUserConfigParam m_music_volume
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( FloatUserConfigParam(0.7f, "music_volume", &m_audio_group, "Music volume from 0.0 to 1.0") );
|
2009-06-21 11:44:02 -04:00
|
|
|
|
|
|
|
// ---- Race setup
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_PREFIX GroupUserConfigParam m_race_setup_group
|
|
|
|
PARAM_DEFAULT( GroupUserConfigParam("RaceSetup", "Race Setup Settings") );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_num_karts
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(4, "numkarts", &m_race_setup_group, "Default number of karts. -1 means use all") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_num_laps
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(4, "numlaps", &m_race_setup_group, "Default number of laps.") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_difficulty
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(0, "difficulty", &m_race_setup_group, "Default race difficulty. 0=easy, 1=medium, 2=hard") );
|
2010-10-23 21:53:50 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_game_mode
|
|
|
|
PARAM_DEFAULT( IntUserConfigParam(0, "game_mode", &m_race_setup_group, "Game mode. 0=standard, 1=time trial, 2=follow the leader, 3=3 strikes") );
|
2010-10-27 16:10:16 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_default_kart
|
|
|
|
PARAM_DEFAULT( StringUserConfigParam("tux", "kart", "Kart to select by default (the last used kart)") );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
// ---- Video
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_PREFIX GroupUserConfigParam m_video_group
|
|
|
|
PARAM_DEFAULT( GroupUserConfigParam("Video", "Video Settings") );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_width
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(800, "width", &m_video_group, "Screen/window width in pixels") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_height
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(600, "height", &m_video_group, "Screen/window height in pixels") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_fullscreen
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(false, "fullscreen", &m_video_group) );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_prev_width
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(800, "prev_width", &m_video_group, "Previous screen/window width") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_prev_height
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(600, "prev_height", &m_video_group,"Previous screen/window height") );
|
2010-02-03 19:45:24 -05:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_prev_fullscreen
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(false, "prev_fullscreen", &m_video_group) );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
|
|
|
// TODO : adapt to be more powerful with irrlicht
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_graphical_effects
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "gfx", &m_video_group) );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-06-09 19:33:06 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_show_steering_animations
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "steering_animations", &m_video_group, "Display steering animations in race") );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX BoolUserConfigParam m_display_fps
|
2009-06-21 12:15:27 -04:00
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(false, "show_fps", &m_video_group, "Display frame per seconds") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_max_fps
|
2009-06-22 18:34:42 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(120, "max_fps", &m_video_group, "Maximum fps, should be at least 60") );
|
2009-06-21 11:44:02 -04:00
|
|
|
|
2009-09-15 00:48:14 -04:00
|
|
|
// Renderer type (OpenGL, Direct3D9, Direct3D8, Software, etc)
|
|
|
|
PARAM_PREFIX IntUserConfigParam m_renderer
|
|
|
|
PARAM_DEFAULT( IntUserConfigParam(0, "renderer", &m_video_group,
|
|
|
|
"Type of the renderer.") );
|
|
|
|
|
2010-03-24 19:52:41 -04:00
|
|
|
// ---- Debug - not saved to config file
|
2010-04-19 08:37:45 -04:00
|
|
|
/** If gamepad debugging is enabled. */
|
2010-03-24 19:52:41 -04:00
|
|
|
PARAM_PREFIX bool m_gamepad_debug PARAM_DEFAULT( false );
|
2010-10-26 05:57:26 -04:00
|
|
|
/** If material debugging (printing terrain specific slowdown) is enabled. */
|
|
|
|
PARAM_PREFIX bool m_material_debug PARAM_DEFAULT( false );
|
2010-03-24 19:52:41 -04:00
|
|
|
|
2010-04-19 08:37:45 -04:00
|
|
|
/** If track debugging is enabled. */
|
2010-03-24 19:52:41 -04:00
|
|
|
PARAM_PREFIX int m_track_debug PARAM_DEFAULT( false );
|
|
|
|
|
2010-04-19 08:37:45 -04:00
|
|
|
/** True if check structures should be debugged. */
|
|
|
|
PARAM_PREFIX bool m_check_debug PARAM_DEFAULT( false );
|
|
|
|
|
2010-04-26 19:28:11 -04:00
|
|
|
/** Special debug camera being high over the kart. */
|
|
|
|
PARAM_PREFIX bool m_camera_debug PARAM_DEFAULT( false );
|
2010-11-24 00:57:06 -05:00
|
|
|
|
|
|
|
/** True if slipstream debugging is activated. */
|
|
|
|
PARAM_PREFIX bool m_slipstream_debug PARAM_DEFAULT( false );
|
2010-12-10 00:54:04 -05:00
|
|
|
|
|
|
|
/** True if currently developed tutorial debugging is enabled. */
|
|
|
|
PARAM_PREFIX bool m_tutorial_debug PARAM_DEFAULT( false );
|
2010-04-26 19:28:11 -04:00
|
|
|
|
2010-03-24 19:52:41 -04:00
|
|
|
/** Verbosity level for debug messages. Note that error and important warnings
|
|
|
|
* must always be printed. */
|
|
|
|
PARAM_PREFIX int m_verbosity PARAM_DEFAULT( 0 );
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
// ---- Networking
|
|
|
|
PARAM_PREFIX StringUserConfigParam m_server_address
|
|
|
|
PARAM_DEFAULT( StringUserConfigParam("localhost", "server_adress", "Information about last server used") );
|
|
|
|
PARAM_PREFIX IntUserConfigParam m_server_port
|
|
|
|
PARAM_DEFAULT( IntUserConfigParam(2305, "server_port", "Information about last server used") );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-03-01 17:56:32 -05:00
|
|
|
// ---- Graphic Quality
|
|
|
|
PARAM_PREFIX GroupUserConfigParam m_graphics_quality
|
|
|
|
PARAM_DEFAULT( GroupUserConfigParam("GFX", "Graphics Quality Settings") );
|
|
|
|
|
|
|
|
PARAM_PREFIX BoolUserConfigParam m_anisotropic
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "anisotropic", &m_graphics_quality,
|
|
|
|
"Whether anisotropic filtering is allowed to be used (true or false)") );
|
|
|
|
PARAM_PREFIX BoolUserConfigParam m_trilinear
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(true, "trilinear", &m_graphics_quality,
|
|
|
|
"Whether trilinear filtering is allowed to be used (true or false)") );
|
|
|
|
|
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
// ---- Misc
|
|
|
|
PARAM_PREFIX BoolUserConfigParam m_crashed
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(false, "crashed") ); // TODO : is this used with new code? does it still work?
|
|
|
|
PARAM_PREFIX BoolUserConfigParam m_log_errors
|
|
|
|
PARAM_DEFAULT( BoolUserConfigParam(false, "log_errors", "Enable logging of stdout and stderr to logfile") );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2010-01-04 20:13:53 -05:00
|
|
|
PARAM_PREFIX IntUserConfigParam m_reverse_look_threshold
|
2010-03-24 19:52:41 -04:00
|
|
|
PARAM_DEFAULT( IntUserConfigParam(0, "reverse_look_threshold",
|
|
|
|
"If the kart is driving backwards faster than this value,\n"
|
|
|
|
"switch automatically to reverse camera (set to 0 to disable).") );
|
2010-01-04 20:13:53 -05:00
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_item_style
|
|
|
|
PARAM_DEFAULT( StringUserConfigParam("items", "item_style", "Name of the .items file to use.") );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_kart_group
|
2010-05-01 19:40:50 -04:00
|
|
|
PARAM_DEFAULT( StringUserConfigParam(DEFAULT_GROUP_NAME, "kart_group", "Last selected kart group") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_track_group
|
2010-05-01 19:40:50 -04:00
|
|
|
PARAM_DEFAULT( StringUserConfigParam(DEFAULT_GROUP_NAME, "track_group", "Last selected track group") );
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_last_track
|
|
|
|
PARAM_DEFAULT( StringUserConfigParam("jungle", "last_track", "Name of the last track used.") );
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2009-06-21 11:44:02 -04:00
|
|
|
PARAM_PREFIX StringUserConfigParam m_skin_file
|
2010-11-29 11:42:55 -05:00
|
|
|
PARAM_DEFAULT( StringUserConfigParam("Peach.stkskin", "skin_file", "Name of the skin to use") );
|
2010-06-30 14:40:55 -04:00
|
|
|
|
|
|
|
PARAM_PREFIX StringUserConfigParam m_server_addons
|
|
|
|
PARAM_DEFAULT( StringUserConfigParam("http://download.tuxfamily.org/stkaddons/0.7/", "server_addons", "The server used for addon.") );
|
2009-06-21 11:44:02 -04:00
|
|
|
|
|
|
|
PARAM_PREFIX bool m_no_start_screen PARAM_DEFAULT( false ); // not saved to file
|
2009-08-02 13:56:59 -04:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
// TODO? implement blacklist for new irrlicht device and GUI
|
|
|
|
PARAM_PREFIX std::vector<std::string> m_blacklist_res;
|
|
|
|
|
2009-07-18 11:32:54 -04:00
|
|
|
PARAM_PREFIX ptr_vector<PlayerProfile> m_all_players;
|
2010-03-01 17:56:32 -05:00
|
|
|
|
2009-06-20 21:10:43 -04:00
|
|
|
}
|
|
|
|
#undef PARAM_PREFIX
|
|
|
|
#undef PARAM_SUFFIX
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2010-04-23 16:36:13 -04:00
|
|
|
/**
|
|
|
|
* \brief Class for managing general STK user configuration data.
|
|
|
|
* \ingroup config
|
|
|
|
*/
|
2010-09-08 07:39:19 -04:00
|
|
|
class UserConfig : public NoCopy
|
2009-06-20 21:10:43 -04:00
|
|
|
{
|
|
|
|
private:
|
|
|
|
|
|
|
|
/** Filename of the user config file. */
|
2010-01-14 20:46:03 -05:00
|
|
|
std::string m_filename;
|
|
|
|
irr::core::stringw m_warning;
|
2007-05-27 12:01:53 -04:00
|
|
|
|
2010-01-14 20:46:03 -05:00
|
|
|
void addDefaultPlayer();
|
2007-05-27 12:01:53 -04:00
|
|
|
public:
|
2010-01-14 20:46:03 -05:00
|
|
|
UserConfig();
|
|
|
|
~UserConfig();
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2009-06-21 14:55:12 -04:00
|
|
|
bool loadConfig();
|
2010-01-14 20:46:03 -05:00
|
|
|
void saveConfig();
|
2009-06-20 21:10:43 -04:00
|
|
|
|
2009-08-30 14:21:59 -04:00
|
|
|
const irr::core::stringw& getWarning() { return m_warning; }
|
|
|
|
void resetWarning() { m_warning=""; }
|
|
|
|
void setWarning(irr::core::stringw& warning) { m_warning=warning; }
|
2009-01-22 07:02:40 -05:00
|
|
|
|
2010-01-14 20:46:03 -05:00
|
|
|
}; // UserConfig
|
2007-05-27 12:01:53 -04:00
|
|
|
|
|
|
|
|
|
|
|
extern UserConfig *user_config;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*EOF*/
|