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: */