statistics_backdrop = Surface::create("images/engine/menu/score-backdrop.png");
- restart_level();
+ if (restart_level() != 0)
+ throw std::runtime_error ("Initializing the level failed.");
game_menu.reset(new GameMenu(*level));
}
-void
+int
GameSession::restart_level()
{
if (edit_mode) {
force_ghost_mode();
- return;
+ return (-1);
}
game_pause = false;
end_sequence = 0;
- g_main_controller->reset();
+ g_jk_controller->reset();
currentsector = 0;
} catch(std::exception& e) {
log_fatal << "Couldn't start level: " << e.what() << std::endl;
g_screen_manager->exit_screen();
+ return (-1);
}
sound_manager->stop_music();
if(capture_file != "") {
int newSeed=0; // next run uses a new seed
while (newSeed == 0) // which is the next non-zero random num.
- newSeed = systemRandom.rand();
- g_config->random_seed = systemRandom.srand(newSeed);
+ newSeed = gameRandom.rand();
+ g_config->random_seed = gameRandom.srand(newSeed);
log_info << "Next run uses random seed " << g_config->random_seed <<std::endl;
record_demo(capture_file);
}
+
+ return (0);
}
GameSession::~GameSession()
// save input for demo?
if(capture_demo_stream != 0) {
- capture_demo_stream ->put(g_main_controller->hold(Controller::LEFT));
- capture_demo_stream ->put(g_main_controller->hold(Controller::RIGHT));
- capture_demo_stream ->put(g_main_controller->hold(Controller::UP));
- capture_demo_stream ->put(g_main_controller->hold(Controller::DOWN));
- capture_demo_stream ->put(g_main_controller->hold(Controller::JUMP));
- capture_demo_stream ->put(g_main_controller->hold(Controller::ACTION));
+ Controller *controller = g_jk_controller->get_main_controller();
+ capture_demo_stream ->put(controller->hold(Controller::LEFT));
+ capture_demo_stream ->put(controller->hold(Controller::RIGHT));
+ capture_demo_stream ->put(controller->hold(Controller::UP));
+ capture_demo_stream ->put(controller->hold(Controller::DOWN));
+ capture_demo_stream ->put(controller->hold(Controller::JUMP));
+ capture_demo_stream ->put(controller->hold(Controller::ACTION));
}
}
void
GameSession::setup()
{
+ if (currentsector == NULL)
+ return;
+
if(currentsector != Sector::current()) {
currentsector->activate(currentsector->player->get_pos());
}
GameSession::update(float elapsed_time)
{
// handle controller
- if(g_main_controller->pressed(Controller::PAUSE_MENU))
+ if(g_jk_controller->get_main_controller()->pressed(Controller::PAUSE_MENU))
on_escape_press();
process_events();