#include "physfs/physfs_sdl.hpp"
#include "random_generator.hpp"
#include "worldmap/worldmap.hpp"
+#include "binreloc/binreloc.h"
SDL_Surface* screen = 0;
JoystickKeyboardController* main_controller = 0;
if(f) {
fclose(f);
if(!PHYSFS_addToSearchPath(dir.c_str(), 1)) {
- msg_warning << "Couldn't add '" << dir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl;
+ log_warning << "Couldn't add '" << dir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl;
} else {
sourcedir = true;
}
#if defined(APPDATADIR) || defined(ENABLE_BINRELOC)
std::string datadir;
#ifdef ENABLE_BINRELOC
- char* brdatadir = br_strcat(DATADIR, "/" PACKAGE_NAME);
- datadir = brdatadir;
- free(brdatadir);
+
+ char* dir;
+ br_init (NULL);
+ dir = br_find_data_dir(APPDATADIR);
+ datadir = dir;
+ datadir += "/" PACKAGE_NAME;
+ free(dir);
+
#else
datadir = APPDATADIR;
#endif
" --disable-music Disable music\n"
" --help Show this help message\n"
" --version Display 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"));
}
+/**
+ * Options that should be evaluated prior to any initializations at all go here
+ */
+static bool pre_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 == "--version") {
+ std::cout << PACKAGE_NAME << " " << PACKAGE_VERSION << std::endl;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Options that should be evaluated after config is read go here
+ */
static bool parse_commandline(int argc, char** argv)
{
for(int i = 1; i < argc; ++i) {
}
} else if(arg == "--show-fps") {
config->show_fps = true;
+ } else if(arg == "--no-show-fps") {
+ config->show_fps = false;
+ } else if(arg == "--console") {
+ config->console_enabled = true;
+ } else if(arg == "--noconsole") {
+ config->console_enabled = false;
} else if(arg == "--disable-sfx") {
config->sound_enabled = false;
} else if(arg == "--disable-music") {
config->record_demo = argv[++i];
} else if(arg == "-d") {
config->enable_script_debugger = true;
- } else if(arg == "--help") {
- print_usage(argv[0]);
- return true;
- } else if(arg == "--version") {
- log_info << PACKAGE_NAME << " " << PACKAGE_VERSION << std::endl;
- return true;
} else if(arg[0] != '-') {
config->start_level = arg;
} else {
log_warning << "Unknown option '" << arg << "'. Use --help to see a list of options" << std::endl;
+ return true;
}
}
int result = 0;
try {
+
+ if(pre_parse_commandline(argc, argv))
+ return 0;
+
Console::instance = new Console();
init_physfs(argv[0]);
init_sdl();
//init_rand(); PAK: this call might subsume the above 3, but I'm chicken!
main_loop->run();
-
} catch(std::exception& e) {
log_fatal << "Unexpected exception: " << e.what() << std::endl;
result = 1;