Fixed crash when random kart was last used and then trying to play challenges + move error messages to where they belong, no error message should be printed when doing a valid check if a kart exists
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@6858 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
c11f275fef
commit
08b33dc2fe
@ -191,7 +191,7 @@ const int KartPropertiesManager::getKartId(const std::string &ident) const
|
||||
i != m_karts_properties.end(); ++i)
|
||||
{
|
||||
if(UserConfigParams::m_verbosity>=5)
|
||||
std::cout << " -- " << (*i)->getIdent().c_str() << std::endl;
|
||||
std::cout << "[KartPropertiesManager] getKartId : " << (*i)->getIdent().c_str() << std::endl;
|
||||
if ((*i)->getIdent() == ident)
|
||||
return i-m_karts_properties.begin();
|
||||
}
|
||||
@ -211,7 +211,6 @@ const KartProperties* KartPropertiesManager::getKart(const std::string &ident) c
|
||||
return *i;
|
||||
}
|
||||
|
||||
printf("Could not find a kart named %s\n", ident.c_str());
|
||||
return NULL;
|
||||
} // getKart
|
||||
|
||||
@ -341,8 +340,15 @@ std::vector<std::string> KartPropertiesManager::getRandomKartList(int count,
|
||||
std::vector<std::string> all_karts;
|
||||
for(unsigned int i=0; i<existing_karts.size(); i++)
|
||||
{
|
||||
int id=getKartId(existing_karts[i].getKartName());
|
||||
used[id] = true;
|
||||
try
|
||||
{
|
||||
int id=getKartId(existing_karts[i].getKartName());
|
||||
used[id] = true;
|
||||
}
|
||||
catch (std::runtime_error& ex)
|
||||
{
|
||||
std::cerr << "[KartPropertiesManager] getRandomKartList : WARNING, can't find kart '" << existing_karts[i].getKartName() << "'\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Add karts from the current group
|
||||
|
@ -92,6 +92,7 @@ void RaceManager::setPlayerKart(unsigned int player_id, const RemoteKartInfo& ki
|
||||
void RaceManager::setLocalKartInfo(unsigned int player_id, const std::string& kart)
|
||||
{
|
||||
assert(0<=player_id && player_id <m_local_player_karts.size());
|
||||
assert(kart_properties_manager->getKart(kart) != NULL);
|
||||
|
||||
m_local_player_karts[player_id] = RemoteKartInfo(player_id, kart,
|
||||
StateManager::get()->getActivePlayerProfile(player_id)->getName(),
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "input/device_manager.hpp"
|
||||
#include "input/input_manager.hpp"
|
||||
#include "io/file_manager.hpp"
|
||||
#include "karts/kart_properties_manager.hpp"
|
||||
#include "network/network_manager.hpp"
|
||||
#include "race/race_manager.hpp"
|
||||
#include "states_screens/state_manager.hpp"
|
||||
@ -131,6 +132,12 @@ void ChallengesScreen::eventCallback(GUIEngine::Widget* widget, const std::strin
|
||||
{
|
||||
//FIXME: simplify and centralize race start sequence!!
|
||||
|
||||
// Verify the kart in the config exists
|
||||
if (kart_properties_manager->getKart(UserConfigParams::m_default_kart) == NULL)
|
||||
{
|
||||
UserConfigParams::m_default_kart.revertToDefaults();
|
||||
}
|
||||
|
||||
// Use latest used device
|
||||
InputDevice* device = input_manager->getDeviceList()->getLatestUsedDevice();
|
||||
|
||||
|
@ -521,11 +521,23 @@ void FeatureUnlockedCutScene::addUnlockedThings(const std::vector<const Challeng
|
||||
case UNLOCK_KART:
|
||||
{
|
||||
const KartProperties* kart = kart_properties_manager->getKart(unlockedFeatures[i].name);
|
||||
assert(kart != NULL);
|
||||
|
||||
// the passed kart will not be modified, that's why I allow myself to use const_cast
|
||||
addUnlockedKart( const_cast<KartProperties*>(kart),
|
||||
unlockedFeatures[i].getUnlockedMessage() );
|
||||
if (kart == NULL)
|
||||
{
|
||||
fprintf(stderr, "[KartSelectionScreen] WANRING: could not find a kart named '%s'\n",
|
||||
unlockedFeatures[i].name.c_str());
|
||||
|
||||
video::ITexture* tex = irr_driver->getTexture(file_manager->getGUIDir() + "/main_help.png");
|
||||
addUnlockedPicture(tex, 1.0f, 0.75f,
|
||||
L"???" );
|
||||
}
|
||||
else
|
||||
{
|
||||
// the passed kart will not be modified, that's why I allow myself to use const_cast
|
||||
addUnlockedKart(const_cast<KartProperties*>(kart),
|
||||
unlockedFeatures[i].getUnlockedMessage() );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case UNLOCK_DIFFICULTY:
|
||||
|
@ -304,7 +304,11 @@ void GrandPrixLose::setKarts(std::vector<std::string> ident_arg)
|
||||
kart_model->setAnimation(KartModel::AF_DEFAULT);
|
||||
float susp[4]={0,0,0,0};
|
||||
kart_model->update(0.0f, 0.0f, susp);
|
||||
} // if kart !=NULL
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "[GrandPrixLose] WARNING: could not find a kart named '%s'\n", ident_arg[n].c_str());
|
||||
}// if kart !=NULL
|
||||
|
||||
m_kart_node[n] = kart_main_node;
|
||||
}
|
||||
|
@ -433,7 +433,7 @@ void GrandPrixWin::setKarts(const std::string idents_arg[3])
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "GrandPrixWin : warning : kart '" << idents[n] << "' not found!\n";
|
||||
std::cerr << "[GrandPrixWin] WARNING : kart '" << idents[n] << "' not found!\n";
|
||||
}
|
||||
|
||||
m_kart_node[n] = kart_main_node;
|
||||
|
@ -310,6 +310,8 @@ public:
|
||||
const KartProperties* props = kart_properties_manager->getKart(default_kart);
|
||||
if(!props)
|
||||
{
|
||||
fprintf(stderr, "[KartSelectionScreen] WARNING: could not find a kart named '%s'\n", default_kart.c_str());
|
||||
|
||||
// If the default kart can't be found (e.g. previously a addon
|
||||
// kart was used, but the addon package was removed, use the
|
||||
// first kart as a default. This way we don't have to hardcode
|
||||
@ -803,6 +805,10 @@ public:
|
||||
|
||||
m_parent->m_kart_widgets[playerID].m_kart_name->setText( selectionText.c_str() );
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "[KartSelectionScreen] WARNING: could not find a kart named '%s'\n", selectionID.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
m_parent->m_kart_widgets[playerID].setKartInternalName(selectionID);
|
||||
|
Loading…
x
Reference in New Issue
Block a user