#include "scripting/squirrel_util.hpp"
#include "supertux/gameconfig.hpp"
#include "supertux/globals.hpp"
+#include "supertux/player_status.hpp"
#include "supertux/screen_manager.hpp"
#include "supertux/resources.hpp"
#include "supertux/title_screen.hpp"
PHYSFS_permitSymbolicLinks(1);
// Initialize physfs (this is a slightly modified version of
- // PHYSFS_setSaneConfig
- const char* application = "supertux2"; //instead of PACKAGE_NAME so we can coexist with MS1
+ // PHYSFS_setSaneConfig)
+ const char* application = PACKAGE_NAME;
const char* userdir = PHYSFS_getUserDir();
char* writedir = new char[strlen(userdir) + strlen(application) + 2];
#endif
if(!sourcedir) {
-#if defined(APPDATADIR) || defined(ENABLE_BINRELOC)
- std::string datadir;
+ std::string datadir = PHYSFS_getBaseDir();
+ datadir = datadir.substr(0, datadir.rfind(INSTALL_SUBDIR_BIN));
+ datadir += "/" INSTALL_SUBDIR_SHARE;
#ifdef ENABLE_BINRELOC
char* dir;
br_init (NULL);
- dir = br_find_data_dir(APPDATADIR);
+ dir = br_find_data_dir(datadir.c_str());
datadir = dir;
free(dir);
-#else
- datadir = APPDATADIR;
#endif
if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) {
log_warning << "Couldn't add '" << datadir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl;
}
-#endif
}
//show search Path
}
else
{
- g_config->video = get_video_system(argv[i]);
+ g_config->video = VideoSystem::get_video_system(argv[i]);
}
} else if(arg == "--show-fps") {
g_config->show_fps = true;
SDL_WM_SetIcon(icon, 0);
SDL_FreeSurface(icon);
}
-#ifndef NDEBUG
else {
log_warning << "Couldn't load icon '" << icon_fname << "'" << std::endl;
}
-#endif
SDL_ShowCursor(0);
}
}
-#ifndef NDEBUG
static Uint32 last_timelog_ticks = 0;
static const char* last_timelog_component = 0;
last_timelog_ticks = current_ticks;
last_timelog_component = component;
}
-#else
-static inline void timelog(const char* )
-{
-}
-#endif
int
Main::run(int argc, char** argv)
timelog(0);
+ const std::auto_ptr<PlayerStatus> default_playerstatus(new PlayerStatus());
+
g_screen_manager = new ScreenManager();
+
+ init_rand();
+
if(g_config->start_level != "") {
// we have a normal path specified at commandline, not a physfs path.
// So we simply mount that path here...
if(g_config->start_level.size() > 4 &&
g_config->start_level.compare(g_config->start_level.size() - 5, 5, ".stwm") == 0) {
- init_rand();
g_screen_manager->push_screen(new worldmap::WorldMap(
- FileSystem::basename(g_config->start_level)));
+ FileSystem::basename(g_config->start_level), default_playerstatus.get()));
} else {
- init_rand();//If level uses random eg. for
- // rain particles before we do this:
std::auto_ptr<GameSession> session (
- new GameSession(FileSystem::basename(g_config->start_level)));
+ new GameSession(FileSystem::basename(g_config->start_level), default_playerstatus.get()));
g_config->random_seed =session->get_demo_random_seed(g_config->start_demo);
init_rand();//initialise generator with seed from session
g_screen_manager->push_screen(session.release());
}
} else {
- init_rand();
- g_screen_manager->push_screen(new TitleScreen());
+ g_screen_manager->push_screen(new TitleScreen(default_playerstatus.get()));
}
- //init_rand(); PAK: this call might subsume the above 3, but I'm chicken!
g_screen_manager->run(context);
} catch(std::exception& e) {
log_fatal << "Unexpected exception: " << e.what() << std::endl;