#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 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"
" --show-fps 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 == "--console") {
+ config->console_enabled = true;
} 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 {
int result = 0;
try {
+
+ if(pre_parse_commandline(argc, argv))
+ return 0;
+
Console::instance = new Console();
init_physfs(argv[0]);
init_sdl();