Improved handling in case that not enough karts are available, and

they are all used by players - admittedly only happens in extreme
debugging environments ;)


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@5921 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk 2010-09-08 11:37:36 +00:00
parent 0fd5c79b33
commit e3be1c3bc8

View File

@ -369,7 +369,20 @@ std::vector<std::string> KartPropertiesManager::getRandomKartList(int count,
!unlock_manager->isLocked(m_karts_properties[i]->getIdent()) )
karts.push_back(i);
}
assert(karts.size() > 0);
// If there are no unused karts, use used karts again.
// This means that e.g. if only one kart is availabe, which is
// used by the player, it will still be used by AI karts (which
// can be useful for debugging).
if(karts.size()==0)
{
for(unsigned int i=0; i<getNumberOfKarts(); i++)
{
std::cout << "Refill : i=" << i << ", used[i]=" << used[i] << ", m_kart_available[i]=" << m_kart_available[i] << std::endl;
if(m_kart_available[i] &&
!unlock_manager->isLocked(m_karts_properties[i]->getIdent()) )
karts.push_back(i);
}
}
std::random_shuffle(karts.begin(), karts.end());
}