X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsupertux.cpp;h=62f96b8aef24964a8f599c3b0dea064bb818fc8e;hb=2074a5e3f8167dec24989c008ddadda14687a3a6;hp=ce71bc9920a2732e07485cd809486a0a657a5880;hpb=2ec1be264110139466ab70422b8f4fd9c22e5c8c;p=supertux.git diff --git a/src/supertux.cpp b/src/supertux.cpp index ce71bc992..62f96b8ae 100644 --- a/src/supertux.cpp +++ b/src/supertux.cpp @@ -20,6 +20,10 @@ #include #include +#include + +#include +#include "exceptions.h" #include "defines.h" #include "globals.h" @@ -28,48 +32,63 @@ #include "title.h" #include "gameloop.h" #include "leveleditor.h" -#include "screen.h" +#include "screen/screen.h" #include "worldmap.h" #include "resources.h" -#include "texture.h" +#include "screen/texture.h" #include "tile.h" int main(int argc, char * argv[]) { - st_directory_setup(); - parseargs(argc, argv); - - st_audio_setup(); - st_video_setup(); - st_joystick_setup(); - st_general_setup(); - st_menu(); - loadshared(); +#ifndef DEBUG + try { +#endif + st_directory_setup(); + parseargs(argc, argv); + + st_audio_setup(); + st_video_setup(); + st_joystick_setup(); + st_general_setup(); + st_menu(); + loadshared(); - if (launch_worldmap_mode) + if (launch_leveleditor_mode && level_startup_file) { - WorldMapNS::WorldMap worldmap; - worldmap.display(); + // TODO + // leveleditor(level_startup_file); } - else if (level_startup_file) + else if (level_startup_file) { - GameSession session(level_startup_file, 1, ST_GL_LOAD_LEVEL_FILE); + GameSession session(level_startup_file, ST_GL_LOAD_LEVEL_FILE); session.run(); } - else + else { title(); } - - clearscreen(0, 0, 0); - updatescreen(); - unloadshared(); - TileManager::destroy_instance(); -#ifdef DEBUG - Surface::debug_check(); + SDL_FillRect(screen, 0, 0); + SDL_Flip(screen); + + unloadshared(); + st_general_free(); + TileManager::destroy_instance(); + #ifdef DEBUG + Surface::debug_check(); + #endif + st_shutdown(); +#ifndef DEBUG // we want to see the backtrace in gdb when in debug mode + } + catch (SuperTuxException &e) + { + std::cerr << "Unhandled SuperTux exception:\n " << e.what_file() << ":" << e.what_line() << ": " << e.what() << std::endl; + } + catch (std::exception &e) + { + std:: cerr << "Unhandled exception: " << e.what() << std::endl; + } #endif - st_shutdown(); - + return 0; }