#ifndef HEADER_SUPERTUX_SUPERTUX_GAMECONFIG_HPP
#define HEADER_SUPERTUX_SUPERTUX_GAMECONFIG_HPP
-#include "video/video_systems.hpp"
+#include "control/joystick_config.hpp"
+#include "control/keyboard_config.hpp"
+#include "math/size.hpp"
+#include "video/video_system.hpp"
class Config
{
int profile;
- // the width/height to be used to display the game in fullscreen
- int fullscreen_width;
- int fullscreen_height;
+ /** the width/height to be used to display the game in fullscreen */
+ Size fullscreen_size;
- // the width/height of the window managers window
- int window_width;
- int window_height;
+ /** refresh rate for use in fullscreen, 0 for auto */
+ int fullscreen_refresh_rate;
+
+ /** the width/height of the window managers window */
+ Size window_size;
+
+ /** the aspect ratio */
+ Size aspect_size;
- // the aspect ratio
- int aspect_width;
- int aspect_height;
-
float magnification;
bool use_fullscreen;
- VideoSystem video;
+ VideoSystem::Enum video;
bool try_vsync;
bool show_fps;
bool sound_enabled;
bool music_enabled;
bool console_enabled;
- int random_seed; // initial random seed. 0 ==> set from time()
+ /** initial random seed. 0 ==> set from time() */
+ int random_seed;
/** this variable is set if supertux should start in a specific level */
std::string start_level;
std::string start_demo;
std::string record_demo;
- std::string locale; /**< force SuperTux language to this locale, e.g. "de". A file "data/locale/xx.po" must exist for this to work. An empty string means autodetect. */
-};
+ /** force SuperTux language to this locale, e.g. "de". A file
+ "data/locale/xx.po" must exist for this to work. An empty string
+ means autodetect. */
+ std::string locale;
-extern Config* g_config;
+ KeyboardConfig keyboard_config;
+ JoystickConfig joystick_config;
+
+ struct Addon
+ {
+ std::string id;
+ bool enabled;
+ };
+ std::vector<Addon> addons;
+
+ bool developer_mode;
+};
#endif