Exemple #1
0
void Engine::EngineLoop( )
{
    SDL_Event currentEvent;
    startTick = SDL_GetTicks( );
    while( SDL_PollEvent( &currentEvent ) )
    {
        switch( currentEvent.type )
        {
            case SDL_QUIT:
                engineState = Engine::exiting;
            break;
            case SDLK_ESCAPE:
                engineState = Engine::showingMenu;
            break;
        }
        if( currentEvent.type == SDL_KEYDOWN && engineState == Engine::playing )
        {
            switch( currentEvent.key.keysym.sym )
            {
                case SDLK_KP1: if( player.getBonus() ) player.setDirection( 5 ); else player.setDirection( 6 ); player.Move( ); break;
                case SDLK_KP2: if( player.getBonus() ) player.setDirection( 4 ); else player.setDirection( 3 ); player.Move( ); break;
                case SDLK_KP3: if( player.getBonus() ) player.setDirection( 6 ); else player.setDirection( 5 ); player.Move( ); break;
                case SDLK_KP4: if( player.getBonus() ) player.setDirection( 1 ); else player.setDirection( 2 ); player.Move( ); break;
                case SDLK_KP6: if( player.getBonus() ) player.setDirection( 2 ); else player.setDirection( 1 ); player.Move( ); break;
                case SDLK_KP7: if( player.getBonus() ) player.setDirection( 7 ); else player.setDirection( 8 ); player.Move( ); break;
                case SDLK_KP8: if( player.getBonus() ) player.setDirection( 3 ); else player.setDirection( 4 ); player.Move( ); break;
                case SDLK_KP9: if( player.getBonus() ) player.setDirection( 8 ); else player.setDirection( 7 ); player.Move( ); break;
            }
        }
    }
    switch( engineState )
    {
        case Engine::playing:
            Game( );
        break;

        case Engine::showingDeath:
            showDeath( );
        break;

        case Engine::showingSplash:
            showSplash( );
        break;

        case Engine::showingMenu:
            showMenu( );
        break;

        case Engine::restart:
            Restart( );
        break;

        case Engine::starting:
            Starting( );
        break;

        case Engine::showingHighscore:
            showHighScore( );
        break;

        case Engine::enteringName:
            enterName( );
        break;
    }
    SDL_Flip( screen );

    if( SDL_GetTicks( ) - startTick < 1000 / 30 )
    {
        SDL_Delay( ( 1000 / 30 ) - (SDL_GetTicks() - startTick) );
    }
}
 void QTestableDBusServer::doStarting()
 {
   emit Starting();
 }