GameSession::restart_level()
{
game_pause = false;
- exit_status = NONE;
+ exit_status = ES_NONE;
end_sequence = NO_ENDSEQUENCE;
fps_timer.init(true);
if(st_gl_mode == ST_GL_TEST)
{
- exit_status = LEVEL_ABORT;
+ exit_status = ES_LEVEL_ABORT;
}
else if (!Menu::current())
{
Menu::current()->event(event);
if(!Menu::current())
st_pause_ticks_stop();
+
+ /* Tell Tux that the keys are all down, otherwise
+ it could have nasty bugs, like going allways to the right
+ or whatever that key does */
+ Player& tux = *world->get_tux();
+ tux.key_event((SDLKey)keymap.jump, UP);
+ tux.key_event((SDLKey)keymap.duck, UP);
+ tux.key_event((SDLKey)keymap.left, UP);
+ tux.key_event((SDLKey)keymap.right, UP);
+ tux.key_event((SDLKey)keymap.fire, UP);
}
else
{
break;
case SDLK_DELETE:
if(debug_mode)
- tux.got_coffee = 1;
+ tux.got_power = tux.FIRE_POWER;
+ break;
+ case SDLK_HOME:
+ if(debug_mode)
+ tux.got_power = tux.ICE_POWER;
break;
case SDLK_INSERT:
if(debug_mode)
}
else if(end_sequence && !endsequence_timer.check())
{
- exit_status = LEVEL_FINISHED;
+ exit_status = ES_LEVEL_FINISHED;
return;
}
else if(end_sequence == ENDSEQUENCE_RUNNING && endtile && endtile->data >= 1)
if(st_gl_mode != ST_GL_TEST)
drawendscreen();
- exit_status = GAME_OVER;
+ exit_status = ES_GAME_OVER;
}
else
{ // Still has lives, so reset Tux to the levelstart
void
GameSession::action(double frame_ratio)
{
- if (exit_status == NONE)
+ if (exit_status == ES_NONE)
{
// Update Tux and the World
world->action(frame_ratio);
break;
case MNID_ABORTLEVEL:
st_pause_ticks_stop();
- exit_status = LEVEL_ABORT;
+ exit_status = ES_LEVEL_ABORT;
break;
}
}
draw();
- while (exit_status == NONE)
+ while (exit_status == ES_NONE)
{
/* Calculate the movement-factor */
double frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);