fixed what happens at the end of a race, fixed problems with faster music set twice

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2349 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria
2008-10-17 01:41:41 +00:00
parent 909b1bd94e
commit f076540f68
2 changed files with 12 additions and 56 deletions

View File

@@ -85,58 +85,6 @@ RaceResultsGUI::RaceResultsGUI()
} // RaceResultsGUI
// ----------------------------------------------------------------------------
#if 0
Widget *RaceResultsGUI::displayLeaderResults()
{
const unsigned int NUM_KARTS = race_manager->getNumKarts();
int *scores = new int[NUM_KARTS];
int *order = new int[NUM_KARTS];
double *race_time = new double[NUM_KARTS];
// Ignore kart 0, since it was the leader
for( unsigned int kart_id = 1; kart_id < NUM_KARTS; ++kart_id )
{
order[kart_id] = kart_id;
scores[kart_id] = race_manager->getKartScore(kart_id);
race_time[kart_id] = race_manager->getOverallTime(kart_id);
}
//Bubblesort
bool sorted;
do
{
sorted = true;
for( unsigned int i = 1; i < NUM_KARTS - 1; ++i )
{
if( scores[order[i]] < scores[order[i+1]] ||
(scores[order[i]] == scores[order[i+1]]
&& race_time[order[i]] > race_time[order[i+1]]) )
{
int tmp = order[i];
order[i] = order[i+1];
order[i+1] = tmp;
sorted = false;
}
}
} while(!sorted);
for(unsigned int i=1; i<NUM_KARTS; i++)
RaceManager::getKart(order[i])->setPosition(i);
Widget *w_prev=widget_manager->addTextWgt( WTOK_RESULTS, 5, 7, _("Race results") );
widget_manager->hideWgtRect(WTOK_RESULTS);
w_prev->setPosition(WGT_DIR_CENTER, 0.0f, NULL, WGT_DIR_FROM_TOP, 0.1f, NULL);
w_prev = displayKartList(1, NUM_KARTS-1, w_prev, order,
/* display time*/ false, 0.3f);
delete []order;
delete []scores;
delete []race_time;
return w_prev;
} // displayLeaderResults
#endif
// ----------------------------------------------------------------------------
Widget *RaceResultsGUI::displayRaceResults()

View File

@@ -82,8 +82,11 @@ void ThreeStrikesBattle::kartHit(const int kart_id)
removeKart(kart_id);
// almost over, use fast music
if(getCurrentNumKarts()==2)
if(getCurrentNumKarts()==2 && m_faster_music_active==false)
{
sound_manager->switchToFastMusic();
m_faster_music_active = true;
}
}
//-----------------------------------------------------------------------------
std::string ThreeStrikesBattle::getInternalCode() const
@@ -99,11 +102,12 @@ void ThreeStrikesBattle::update(float delta)
if(getCurrentNumKarts()==1 || getCurrentNumPlayers()==0)
{
// Add the results for the remaining kart
for(int i=1; i<(int)race_manager->getNumKarts(); i++)
for(int i=0; i<(int)race_manager->getNumKarts(); i++)
if(!m_kart[i]->isEliminated())
race_manager->RaceFinished(m_kart[i], -1);
race_manager->RaceFinished(m_kart[i], TimedRace::getTime());
TimedRace::enterRaceOverState();
if(!RaceManager::getWorld()->isFinishPhase())
TimedRace::enterRaceOverState();
return;
}
}
@@ -117,6 +121,9 @@ void ThreeStrikesBattle::restartRace()
for(unsigned int n=0; n<kart_amount; n++)
{
m_kart_info[n].m_lives = 3;
// no positions in this mode
m_kart[n]->setPosition(-1);
}// next kart
}
//void ThreeStrikesBattle::getDefaultCollectibles(int& collectible_type, int& amount)
@@ -216,5 +223,6 @@ void ThreeStrikesBattle::raceResultOrder( int* order )
for( unsigned int kart_id = 0; kart_id < NUM_KARTS; ++kart_id )
{
order[kart_id] = kart_id;
m_kart[kart_id]->setPosition(kart_id+1);
}
}