X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=47a40f4c3cfa07c1450ae609caa954946031a0c8;hb=657fc40723665c04b3150946f5bd66b6b0af9230;hp=3fa4158efb39c0dd43e3750e31ae595adc4388bc;hpb=a9b8c5d9aa680049a7c007418fe852efcbd592be;p=supertux.git diff --git a/src/main.cpp b/src/main.cpp index 3fa4158ef..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,9 +224,10 @@ 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" - " -h, --help Show this help message\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" @@ -249,6 +251,10 @@ static bool pre_parse_commandline(int argc, char** argv) std::cout << PACKAGE_NAME << " " << PACKAGE_VERSION << std::endl; return true; } + if(arg == "--help" || arg == "-h") { + print_usage(argv[0]); + return true; + } } return false; @@ -262,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" || arg == "-h") { - 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; @@ -341,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") { @@ -529,9 +543,7 @@ int main(int argc, char** argv) { int result = 0; -#ifndef DEBUG try { -#endif if(pre_parse_commandline(argc, argv)) return 0; @@ -576,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 && @@ -609,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; @@ -617,7 +629,6 @@ int main(int argc, char** argv) log_fatal << "Unexpected exception" << std::endl; result = 1; } -#endif delete main_loop; main_loop = NULL;