fixed crashes with command line arguments

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@3790 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2009-08-02 17:56:59 +00:00
parent aceea4b120
commit 70f74f7142
4 changed files with 25 additions and 14 deletions

View File

@ -41,13 +41,12 @@ private:
StringUserConfigParam m_name;
int m_last_kart_id;
// int m_last_kart_id;
public:
PlayerProfile(const char* name) : m_player_group("Player", "Represents one human player"),
m_name(name, "name", &m_player_group),
m_last_kart_id(-1)
m_name(name, "name", &m_player_group) //, m_last_kart_id(-1)
{
}
@ -56,8 +55,8 @@ public:
const char* getName() { return m_name.c_str(); }
int getLastKartId(){ return m_last_kart_id; }
void setLastKartId(int newLastKartId){ m_last_kart_id = newLastKartId; }
//int getLastKartId(){ return m_last_kart_id; }
//void setLastKartId(int newLastKartId){ m_last_kart_id = newLastKartId; }
};
/**

View File

@ -265,6 +265,8 @@ namespace UserConfigParams
PARAM_PREFIX bool m_no_start_screen PARAM_DEFAULT( false ); // not saved to file
PARAM_PREFIX std::string m_default_kart PARAM_DEFAULT( "tux" ); // not saved to file
// TODO? implement blacklist for new irrlicht device and GUI
PARAM_PREFIX std::vector<std::string> m_blacklist_res;

View File

@ -253,9 +253,16 @@ int handleCmdLine(int argc, char **argv)
std::string filename=file_manager->getKartFile(std::string(argv[i+1])+".tkkf");
if(filename!="")
{
race_manager->setNumLocalPlayers(1);
race_manager->setLocalKartInfo(0, argv[i+1]);
fprintf ( stdout, "You choose to use kart '%s'.\n", argv[i+1] ) ;
UserConfigParams::m_default_kart = argv[i+1];
// if a player was added with -N, change its kart. Otherwise, nothing to do,
// kart choice will be picked up upon player creation.
if (StateManager::get()->activePlayerCount() > 0)
{
race_manager->setNumLocalPlayers(1);
race_manager->setLocalKartInfo(0, argv[i+1]);
}
fprintf ( stdout, "You chose to use kart '%s'.\n", argv[i+1] ) ;
}
else
{
@ -324,7 +331,7 @@ int handleCmdLine(int argc, char **argv)
{
fprintf ( stdout, "\t%10s: %s\n",
track->getIdent().c_str(),
track->getName());
track->getName().c_str());
}
}
@ -359,7 +366,8 @@ int handleCmdLine(int argc, char **argv)
StateManager::get()->addActivePlayer( new ActivePlayer( &(UserConfigParams::m_all_players[0]) ) );
race_manager->setNumLocalPlayers(1);
race_manager->setLocalKartInfo(0, "tux");
std::string& default_kart = UserConfigParams::m_default_kart;
race_manager->setLocalKartInfo(0, default_kart);
}
else if ( !strcmp(argv[i], "--mirror") )
{

View File

@ -140,7 +140,8 @@ namespace KartSelectionScreen
m_children.push_back(modelView);
// Init kart model
KartModel* kartModel = kart_properties_manager->getKart("tux")->getKartModel();
std::string& default_kart = UserConfigParams::m_default_kart;
KartModel* kartModel = kart_properties_manager->getKart(default_kart)->getKartModel();
this->modelView->addModel( kartModel->getModel() );
this->modelView->addModel( kartModel->getWheelModel(0), kartModel->getWheelGraphicsPosition(0) );
@ -573,11 +574,12 @@ void menuEventKarts(Widget* widget, const std::string& name)
// Build kart list
const int kart_amount = kart_properties_manager->getNumberOfKarts();
// add Tux first
// add Tux (or whatever default kart) first
std::string& default_kart = UserConfigParams::m_default_kart;
for(int n=0; n<kart_amount; n++)
{
const KartProperties* prop = kart_properties_manager->getKartById(n);
if (prop->getIdent() == "tux")
if (prop->getIdent() == default_kart)
{
std::string icon_path = file_manager->getDataDir() ;
icon_path += "/karts/" + prop->getIdent() + "/" + prop->getIconFile();
@ -590,7 +592,7 @@ void menuEventKarts(Widget* widget, const std::string& name)
for(int n=0; n<kart_amount; n++)
{
const KartProperties* prop = kart_properties_manager->getKartById(n);
if (prop->getIdent() != "tux")
if (prop->getIdent() != default_kart)
{
std::string icon_path = file_manager->getDataDir() ;
icon_path += "/karts/" + prop->getIdent() + "/" + prop->getIconFile();