-#if 0
-GameSession::ExitStatus
-GameSession::run()
-{
- Menu::set_current(0);
- current_ = this;
-
- int fps_cnt = 0;
-
- // Eat unneeded events
- SDL_Event event;
- while(SDL_PollEvent(&event))
- {}
-
- draw();
-
- Uint32 fps_ticks = SDL_GetTicks();
- Uint32 fps_nextframe_ticks = SDL_GetTicks();
- Uint32 ticks;
- bool skipdraw = false;
-
- while (exit_status == ES_NONE) {
- // we run in a logical framerate so elapsed time is a constant
- // This will make the game run determistic and not different on different
- // machines
- static const float elapsed_time = 1.0 / LOGICAL_FPS;
- // old code... float elapsed_time = float(ticks - lastticks) / 1000.;
- if(!game_pause)
- game_time += elapsed_time;
-
- // regulate fps
- ticks = SDL_GetTicks();
- if(ticks > fps_nextframe_ticks) {
- if(skipdraw == true) {
- // already skipped last frame? we have to slow down the game then...
- skipdraw = false;
- fps_nextframe_ticks -= (Uint32) (1000.0 / LOGICAL_FPS);
- } else {
- // don't draw all frames when we're getting too slow
- skipdraw = true;
- }
- } else {
- skipdraw = false;
- while(fps_nextframe_ticks > ticks) {
- /* just wait */
- // If we really have to wait long, then do an imprecise SDL_Delay()
- Uint32 diff = fps_nextframe_ticks - ticks;
- if(diff > 15) {
- SDL_Delay(diff - 10);
- }
- ticks = SDL_GetTicks();
- }
- }
- fps_nextframe_ticks = ticks + (Uint32) (1000.0 / LOGICAL_FPS);
-
- process_events();
- process_menu();
-
- // Update the world state and all objects in the world
- if(!game_pause)
- {
- // Update the world
- check_end_conditions();
- if (end_sequence == ENDSEQUENCE_RUNNING)
- update(elapsed_time/2);
- else if(end_sequence == NO_ENDSEQUENCE)
- update(elapsed_time);
- }
-
- if(!skipdraw)
- draw();
-
- // update sounds
- sound_manager->update();
-
- /* Time stops in pause mode */
- if(game_pause || Menu::current())
- {
- continue;
- }
-
- /* Handle music: */
- if (currentsector->player->invincible_timer.started() &&
- currentsector->player->invincible_timer.get_timeleft()
- > TUX_INVINCIBLE_TIME_WARNING && !end_sequence)
- {
- currentsector->play_music(HERRING_MUSIC);
- }
- /* or just normal music? */
- else if(currentsector->get_music_type() != LEVEL_MUSIC && !end_sequence)
- {
- currentsector->play_music(LEVEL_MUSIC);
- }
-
- /* Calculate frames per second */
- if(config->show_fps)
- {
- ++fps_cnt;
-
- if(SDL_GetTicks() - fps_ticks >= 500)
- {
- fps_fps = (float) fps_cnt / .5;
- fps_cnt = 0;
- fps_ticks = SDL_GetTicks();
- }
- }
- }
-
- // just in case
- currentsector = 0;
- main_controller->reset();
- return exit_status;
-}
-#endif
-