update_time = last_update_time = st_get_ticks();
- /* Clear screen: */
-// clearscreen(0, 0, 0);
-// updatescreen();
-
// Eat unneeded events
SDL_Event event;
while (SDL_PollEvent(&event)) {}
draw();
- float overlap = 0.0f;
while (exit_status == NONE)
{
/* Calculate the movement-factor */
// determistic and not different on different machines
if(!game_pause && !Menu::current())
{
- frame_ratio *= game_speed;
- frame_ratio += overlap;
- while (frame_ratio > 0)
- {
- // Update the world
- check_end_conditions();
- if (end_sequence == ENDSEQUENCE_RUNNING)
- action(.5f);
- else if(end_sequence == NO_ENDSEQUENCE)
- action(1.0f);
- frame_ratio -= 1.0f;
- }
- overlap = frame_ratio;
+ // Update the world
+ check_end_conditions();
+ if (end_sequence == ENDSEQUENCE_RUNNING)
+ action(frame_ratio/2);
+ else if(end_sequence == NO_ENDSEQUENCE)
+ action(frame_ratio);
}
else
{
}
/* Handle time: */
- if (!time_left.check() && world->get_tux()->dying == DYING_NOT)
+ if (!time_left.check() && world->get_tux()->dying == DYING_NOT
+ && !end_sequence)
world->get_tux()->kill(Player::KILL);
/* Handle music: */
- if(world->get_tux()->invincible_timer.check())
+ if(world->get_tux()->invincible_timer.check() && !end_sequence)
{
- if(world->get_music_type() != HERRING_MUSIC)
- world->play_music(HERRING_MUSIC);
+ world->play_music(HERRING_MUSIC);
}
/* are we low on time ? */
- else if (time_left.get_left() < TIME_WARNING)
+ else if (time_left.get_left() < TIME_WARNING && !end_sequence)
{
world->play_music(HURRYUP_MUSIC);
}
/* or just normal music? */
- else if(world->get_music_type() != LEVEL_MUSIC)
+ else if(world->get_music_type() != LEVEL_MUSIC && !end_sequence)
{
world->play_music(LEVEL_MUSIC);
}