#include "game_session.hpp"
#include "file_system.hpp"
#include "physfs/physfs_sdl.hpp"
+#include "exceptions.hpp"
SDL_Surface* screen = 0;
JoystickKeyboardController* main_controller = 0;
try {
config->load();
} catch(std::exception& e) {
-#ifdef DEBUG
std::cerr << "Couldn't load config file: " << e.what() << "\n";
-#endif
+ std::cerr << "Using default settings.\n";
}
}
" -f, --fullscreen Run in fullscreen mode\n"
" -w, --window Run in window mode\n"
" -g, --geometry WIDTHxHEIGHT Run SuperTux in given resolution\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"
" --show-fps Display framerate in levels\n"
}
} else if(arg == "--show-fps") {
config->show_fps = true;
+ } else if(arg == "--disable-sfx") {
+ config->sound_enabled = false;
+ } else if(arg == "--disable-music") {
+ config->music_enabled = false;
} else if(arg == "--play-demo") {
if(i+1 >= argc) {
print_usage(argv[0]);
config->record_demo = argv[++i];
} else if(arg == "--help") {
print_usage(argv[0]);
- throw std::runtime_error("");
+ throw graceful_shutdown();
} else if(arg == "--version") {
std::cerr << PACKAGE_NAME << " " << PACKAGE_VERSION << "\n";
- throw std::runtime_error("");
+ throw graceful_shutdown();
} else if(arg[0] != '-') {
config->start_level = arg;
} else {
while(SDL_PollEvent(&event)) {
switch(event.type) {
case SDL_QUIT:
- throw std::runtime_error("received window close");
+ throw graceful_shutdown();
case SDL_KEYDOWN:
case SDL_JOYBUTTONDOWN:
case SDL_MOUSEBUTTONDOWN:
} else {
// normal game
title();
- }
+ }
+ } catch(graceful_shutdown& e) {
} catch(std::exception& e) {
std::cerr << "Unexpected exception: " << e.what() << std::endl;
return 1;