X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsupertux.cpp;h=81856f6e638e6778afad4a15a3e975ca94e42fe5;hb=b47938ec825a6bbf5ef8f49f0f893d2647a79c71;hp=ce71bc9920a2732e07485cd809486a0a657a5880;hpb=2ec1be264110139466ab70422b8f4fd9c22e5c8c;p=supertux.git diff --git a/src/supertux.cpp b/src/supertux.cpp index ce71bc992..81856f6e6 100644 --- a/src/supertux.cpp +++ b/src/supertux.cpp @@ -17,59 +17,91 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. +#include #include -#include +#include +#include +#include +#include #include "defines.h" -#include "globals.h" -#include "setup.h" +#include "app/globals.h" +#include "app/setup.h" #include "intro.h" #include "title.h" #include "gameloop.h" #include "leveleditor.h" -#include "screen.h" +#include "video/screen.h" #include "worldmap.h" #include "resources.h" -#include "texture.h" -#include "tile.h" +#include "video/surface.h" +#include "tile_manager.h" +#include "app/gettext.h" +#include "misc.h" +#include "utils/configfile.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 + config = new MyConfig; + + Setup::init(PACKAGE_NAME, PACKAGE_NAME, PACKAGE_VERSION); + + Setup::parseargs(argc, argv); + + Setup::audio(); + Setup::video(800, 600); + Setup::joystick(); + Setup::general(); + st_menu(); + loadshared(); + + if (launch_leveleditor_mode) + { + LevelEditor leveleditor; - if (launch_worldmap_mode) + if(level_startup_file) + leveleditor.run(level_startup_file); + else + leveleditor.run(); + } + else if (launch_worldmap_mode && level_startup_file) { + // hack to make it possible for someone to give an absolute path + std::string str(level_startup_file); + unsigned int i = str.find_last_of("/", str.size()); + if(i != std::string::npos) + str.erase(0, i+1); + WorldMapNS::WorldMap worldmap; + worldmap.loadmap(str); worldmap.display(); } - 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(); + unloadshared(); + Setup::general_free(); + st_menu_free(); #ifdef DEBUG - Surface::debug_check(); + Surface::debug_check(); #endif - st_shutdown(); - + Termination::shutdown(); +#ifndef DEBUG // we want to see the backtrace in gdb when in debug mode + } catch (std::exception &e) { + std:: cerr << "Unhandled exception: " << e.what() << std::endl; + } +#endif + return 0; }