- std::auto_ptr<GameSession> session
- (new GameSession(FileSystem::basename(config->start_level)));
- if(config->start_demo != "")
- session->play_demo(config->start_demo);
- if(config->record_demo != "")
- session->record_demo(config->record_demo);
- main_loop->push_screen(session.release());
+
+ if(config->start_level.size() > 4 &&
+ config->start_level.compare(config->start_level.size() - 5, 5, ".stwm") == 0) {
+ init_rand();
+ main_loop->push_screen(new WorldMapNS::WorldMap(
+ FileSystem::basename(config->start_level)));
+ } else {
+ init_rand();//If level uses random eg. for
+ // rain particles before we do this:
+ std::auto_ptr<GameSession> session (
+ new GameSession(FileSystem::basename(config->start_level)));
+
+ config->random_seed =session->get_demo_random_seed(config->start_demo);
+ init_rand();//initialise generator with seed from session
+
+ if(config->start_demo != "")
+ session->play_demo(config->start_demo);
+
+ if(config->record_demo != "")
+ session->record_demo(config->record_demo);
+ main_loop->push_screen(session.release());
+ }