예제 #1
0
void RaceManager::next()
{
    World::deleteWorld();
    m_num_finished_karts   = 0;
    m_num_finished_players = 0;
    m_track_number++;
    if(m_track_number<(int)m_tracks.size())
    {
        if(m_major_mode==MAJOR_MODE_GRAND_PRIX && !NetworkWorld::getInstance()->isRunning())
        {
            //Saving GP state
            //We look if Player 1 has already saved this GP.
            SavedGrandPrix* gp =
                SavedGrandPrix::getSavedGP(StateManager::get()
                                           ->getActivePlayerProfile(0)
                                           ->getUniqueID(),
                                           m_grand_prix.getId(),
                                           m_difficulty,
                                           m_num_karts,
                                           m_player_karts.size());
            if(gp != NULL)
            {
                //if so addept it
                gp->setKarts(m_kart_status);
                gp->setNextTrack(m_track_number);
            }
            else
            {
                //create a new entry
                UserConfigParams::m_saved_grand_prix_list.push_back(
                    new SavedGrandPrix(
                        StateManager::get()->getActivePlayerProfile(0)
                                           ->getUniqueID(),
                        m_grand_prix.getId(),
                        m_difficulty,
                        m_player_karts.size(),
                        m_track_number,
                        m_kart_status
                    )
                );
            }
            user_config->saveConfig();
        }
        startNextRace();
    }
    else
    {
        exitRace();
    }
}   // next
예제 #2
0
/** \brief Start the next race or go back to the start screen
 * If there are more races to do, starts the next race, otherwise
 * calls exitRace to finish the race.
 */
void RaceManager::next()
{
    PropertyAnimator::get()->clear();
    World::deleteWorld();
    m_num_finished_karts   = 0;
    m_num_finished_players = 0;
    m_track_number++;
    if(m_track_number<(int)m_tracks.size())
    {
        if( m_major_mode==MAJOR_MODE_GRAND_PRIX &&
            !RaceEventManager::getInstance()->isRunning() )
        {
            // Saving GP state
            saveGP();
        }
        startNextRace();
    }
    else
    {
        exitRace();
    }
}   // next