X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgameconfig.cpp;h=d3c589678b5d8639059473b2e39a5798a93bc9bf;hb=403276e51afda11d0738be756025411d9103a6ed;hp=2373d700d04c5a9c1ee0ec7bf6863b3dd4885b87;hpb=f171cfbf82ac235d60cc53d24bf9be6cc5365550;p=supertux.git diff --git a/src/gameconfig.cpp b/src/gameconfig.cpp index 2373d700d..d3c589678 100644 --- a/src/gameconfig.cpp +++ b/src/gameconfig.cpp @@ -30,12 +30,15 @@ #include "control/joystickkeyboardcontroller.hpp" #include "resources.hpp" #include "main.hpp" +#include "addon/addon_manager.hpp" Config* config = 0; Config::Config() { - use_fullscreen = true; + profile = 1; + use_fullscreen = false; + video = AUTO_VIDEO; try_vsync = true; show_fps = false; sound_enabled = true; @@ -43,9 +46,18 @@ Config::Config() console_enabled = false; random_seed = 0; // set by time(), by default (unless in config) - screenwidth = 800; - screenheight = 600; - aspect_ratio = -1; // autodetect + window_width = 800; + window_height = 600; + + fullscreen_width = 800; + fullscreen_height = 600; + + projection_width = 800; + projection_height = 600; + scale_projection = true; + + aspect_width = 4; + aspect_height = 3; enable_script_debugger = false; @@ -73,10 +85,23 @@ Config::load() const lisp::Lisp* config_video_lisp = config_lisp->get_lisp("video"); if(config_video_lisp) { config_video_lisp->get("fullscreen", use_fullscreen); - config_video_lisp->get("vsync", try_vsync); - config_video_lisp->get("width", screenwidth); - config_video_lisp->get("height", screenheight); - config_video_lisp->get("aspect_ratio", aspect_ratio); + std::string video_string; + config_video_lisp->get("video", video_string); + video = get_video_system(video_string); + config_video_lisp->get("vsync", try_vsync); + + config_video_lisp->get("fullscreen_width", fullscreen_width); + config_video_lisp->get("fullscreen_height", fullscreen_height); + + config_video_lisp->get("window_width", window_width); + config_video_lisp->get("window_height", window_height); + + config_video_lisp->get("projection_width", projection_width); + config_video_lisp->get("projection_height", projection_height); + config_video_lisp->get("scale_projection", scale_projection); + + config_video_lisp->get("aspect_width", aspect_width); + config_video_lisp->get("aspect_height", aspect_height); } const lisp::Lisp* config_audio_lisp = config_lisp->get_lisp("audio"); @@ -89,6 +114,11 @@ Config::load() if(config_control_lisp && main_controller) { main_controller->read(*config_control_lisp); } + + const lisp::Lisp* config_addons_lisp = config_lisp->get_lisp("addons"); + if(config_addons_lisp) { + AddonManager::get_instance().read_config(*config_addons_lisp); + } } void @@ -104,10 +134,22 @@ Config::save() writer.start_list("video"); writer.write_bool("fullscreen", use_fullscreen); + writer.write_string("video", get_video_string(video)); writer.write_bool("vsync", try_vsync); - writer.write_int("width", screenwidth); - writer.write_int("height", screenheight); - writer.write_float("aspect_ratio", aspect_ratio); + + writer.write_int("fullscreen_width", fullscreen_width); + writer.write_int("fullscreen_height", fullscreen_height); + + writer.write_int("window_width", window_width); + writer.write_int("window_height", window_height); + + writer.write_int("projection_width", projection_width); + writer.write_int("projection_height", projection_height); + writer.write_bool("scale_projection", scale_projection); + + writer.write_int("aspect_width", aspect_width); + writer.write_int("aspect_height", aspect_height); + writer.end_list("video"); writer.start_list("audio"); @@ -121,5 +163,9 @@ Config::save() writer.end_list("control"); } + writer.start_list("addons"); + AddonManager::get_instance().write_config(writer); + writer.end_list("addons"); + writer.end_list("supertux-config"); }