X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=47a40f4c3cfa07c1450ae609caa954946031a0c8;hb=657fc40723665c04b3150946f5bd66b6b0af9230;hp=d4da715812e18f505adbf2c915ee61088f3896e2;hpb=f6e58da379b45081837d6c2deb3510e8c5825f02;p=supertux.git diff --git a/src/main.cpp b/src/main.cpp index d4da71581..47a40f4c3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,6 +18,7 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. #include +#include #include #include "log.hpp" @@ -223,17 +224,19 @@ static void print_usage(const char* argv0) " -g, --geometry WIDTHxHEIGHT Run SuperTux in given resolution\n" " -a, --aspect WIDTH:HEIGHT Run SuperTux with given aspect ratio\n" " -d, --default Reset video settings to default values\n" + " --renderer RENDERER Use sdl, opengl, or auto to render\n" " --disable-sfx Disable sound effects\n" " --disable-music Disable music\n" - " --help Show this help message\n" - " --version Display SuperTux version and quit\n" + " -h, --help Show this help message and quit\n" + " -v, --version Show SuperTux version and quit\n" " --console Enable ingame scripting console\n" " --noconsole Disable ingame scripting console\n" " --show-fps Display framerate in levels\n" " --no-show-fps Do not display framerate in levels\n" " --record-demo FILE LEVEL Record a demo to FILE\n" " --play-demo FILE LEVEL Play a recorded demo\n" - "\n")); + " -s, --debug-scripts Enable script debugger.\n" + "%s\n"), ""); } /** @@ -244,10 +247,14 @@ static bool pre_parse_commandline(int argc, char** argv) for(int i = 1; i < argc; ++i) { std::string arg = argv[i]; - if(arg == "--version") { + if(arg == "--version" || arg == "-v") { std::cout << PACKAGE_NAME << " " << PACKAGE_VERSION << std::endl; return true; } + if(arg == "--help" || arg == "-h") { + print_usage(argv[0]); + return true; + } } return false; @@ -261,10 +268,7 @@ static bool parse_commandline(int argc, char** argv) for(int i = 1; i < argc; ++i) { std::string arg = argv[i]; - if(arg == "--help") { - print_usage(argv[0]); - return true; - } else if(arg == "--fullscreen" || arg == "-f") { + if(arg == "--fullscreen" || arg == "-f") { config->use_fullscreen = true; } else if(arg == "--default" || arg == "-d") { config->use_fullscreen = false; @@ -275,8 +279,8 @@ static bool parse_commandline(int argc, char** argv) config->fullscreen_width = 800; config->fullscreen_height = 600; - config->aspect_width = 4; - config->aspect_height = 3; + config->aspect_width = 0; // auto detect + config->aspect_height = 0; } else if(arg == "--window" || arg == "-w") { config->use_fullscreen = false; @@ -340,6 +344,17 @@ static bool parse_commandline(int argc, char** argv) } } } + } else if(arg == "--renderer") { + i += 1; + if(i >= argc) + { + print_usage(argv[0]); + throw std::runtime_error("Need to specify a renderer for renderer argument"); + } + else + { + config->video = get_video_system(argv[i]); + } } else if(arg == "--show-fps") { config->show_fps = true; } else if(arg == "--no-show-fps") { @@ -364,7 +379,7 @@ static bool parse_commandline(int argc, char** argv) throw std::runtime_error("Need to specify a demo filename"); } config->record_demo = argv[++i]; - } else if(arg == "-d") { + } else if(arg == "--debug-scripts" || arg == "-s") { config->enable_script_debugger = true; } else if(arg[0] != '-') { config->start_level = arg; @@ -528,9 +543,7 @@ int main(int argc, char** argv) { int result = 0; -#ifndef DEBUG try { -#endif if(pre_parse_commandline(argc, argv)) return 0; @@ -575,9 +588,10 @@ int main(int argc, char** argv) main_loop = new MainLoop(); if(config->start_level != "") { - // we have a normal path specified at commandline not physfs paths. + // we have a normal path specified at commandline, not a physfs path. // So we simply mount that path here... std::string dir = FileSystem::dirname(config->start_level); + log_debug << "Adding dir: " << dir << std::endl; PHYSFS_addToSearchPath(dir.c_str(), true); if(config->start_level.size() > 4 && @@ -608,7 +622,6 @@ int main(int argc, char** argv) //init_rand(); PAK: this call might subsume the above 3, but I'm chicken! main_loop->run(context); -#ifndef DEBUG } catch(std::exception& e) { log_fatal << "Unexpected exception: " << e.what() << std::endl; result = 1; @@ -616,7 +629,6 @@ int main(int argc, char** argv) log_fatal << "Unexpected exception" << std::endl; result = 1; } -#endif delete main_loop; main_loop = NULL;