Fixed severals problems with FTL GP: GP rank od the leader must be -1

(some GP ranks were not set at all).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@7098 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk
2010-12-20 01:16:03 +00:00
parent 4d2a1d9faf
commit fd3895b45f
3 changed files with 13 additions and 3 deletions

View File

@@ -107,6 +107,8 @@ void FollowTheLeaderRace::countdownReachedZero()
kart->setPosition(getCurrentNumKarts()+1); kart->setPosition(getCurrentNumKarts()+1);
updateRacePosition(); updateRacePosition();
} }
// Time doesn't make any sense in FTL (and it is not displayed)
kart->finishedRace(-1.0f);
} }
// almost over, use fast music // almost over, use fast music

View File

@@ -216,7 +216,12 @@ void RaceManager::startNew()
assert((unsigned int)m_num_karts == m_ai_kart_list.size()+m_player_karts.size()); assert((unsigned int)m_num_karts == m_ai_kart_list.size()+m_player_karts.size());
// First add the AI karts (randomly chosen) // First add the AI karts (randomly chosen)
// ---------------------------------------- // ----------------------------------------
int init_gp_rank = 0;
// GP ranks start with -1 for the leader.
int init_gp_rank =
race_manager->getMinorMode()==RaceManager::MINOR_MODE_FOLLOW_LEADER
? -1
: 0;
const unsigned int ai_kart_count = m_ai_kart_list.size(); const unsigned int ai_kart_count = m_ai_kart_list.size();
for(unsigned int i=0; i<ai_kart_count; i++) for(unsigned int i=0; i<ai_kart_count; i++)
{ {
@@ -403,7 +408,8 @@ void RaceManager::computeGPRanks()
for (unsigned int i=start; i < NUM_KARTS; ++i) for (unsigned int i=start; i < NUM_KARTS; ++i)
{ {
//printf("setting kart %s to rank %i\n", race_manager->getKartName(position[i]).c_str(), i-start); //printf("setting kart %s to rank %i\n",
// m_kart_status[position[i]].m_ident.c_str(), i-start);
m_kart_status[position[i]].m_gp_rank = i - start; m_kart_status[position[i]].m_gp_rank = i - start;
} }
// printf("kart %s has rank %i\n", 0, m_kart_status[0].m_gp_rank); // printf("kart %s has rank %i\n", 0, m_kart_status[0].m_gp_rank);

View File

@@ -529,11 +529,13 @@ void RaceResultGUI::renderGlobal(float dt)
*/ */
void RaceResultGUI::determineGPLayout() void RaceResultGUI::determineGPLayout()
{ {
unsigned int num_karts = m_all_row_infos.size(); unsigned int num_karts = race_manager->getNumberOfKarts();
std::vector<int> old_rank(num_karts, 0); std::vector<int> old_rank(num_karts, 0);
for(unsigned int kart_id=0; kart_id<num_karts; kart_id++) for(unsigned int kart_id=0; kart_id<num_karts; kart_id++)
{ {
int rank = race_manager->getKartGPRank(kart_id); int rank = race_manager->getKartGPRank(kart_id);
// In case of FTL mode: ignore the leader
if(rank<0) continue;
old_rank[kart_id] = rank; old_rank[kart_id] = rank;
const Kart *kart = World::getWorld()->getKart(kart_id); const Kart *kart = World::getWorld()->getKart(kart_id);
RowInfo *ri = &(m_all_row_infos[rank]); RowInfo *ri = &(m_all_row_infos[rank]);