Bugfix: in some cases, like after tutorial, game would play at wrong difficulty
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@13117 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -77,44 +77,12 @@ void RaceSetupScreen::eventCallback(Widget* widget, const std::string& name, con
|
||||
{
|
||||
if (name == "difficulty")
|
||||
{
|
||||
RibbonWidget* w = dynamic_cast<RibbonWidget*>(widget);
|
||||
assert(w != NULL);
|
||||
const std::string& selection = w->getSelectionIDString(PLAYER_ID_GAME_MASTER);
|
||||
|
||||
if (selection == "novice")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_EASY;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_EASY);
|
||||
}
|
||||
else if (selection == "intermediate")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_MEDIUM;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_MEDIUM);
|
||||
}
|
||||
else if (selection == "expert")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_HARD;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD);
|
||||
}
|
||||
else if (selection == "best")
|
||||
{
|
||||
if (unlock_manager->getCurrentSlot()->isLocked("difficulty_best"))
|
||||
{
|
||||
unlock_manager->playLockSound();
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_HARD;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD);
|
||||
w->setSelection(2, PLAYER_ID_GAME_MASTER);
|
||||
w->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_BEST;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_BEST);
|
||||
}
|
||||
}
|
||||
assignDifficulty();
|
||||
}
|
||||
else if (name == "gamemode")
|
||||
{
|
||||
assignDifficulty();
|
||||
|
||||
DynamicRibbonWidget* w = dynamic_cast<DynamicRibbonWidget*>(widget);
|
||||
const std::string& selectedMode = w->getSelectionIDString(PLAYER_ID_GAME_MASTER);
|
||||
|
||||
@@ -185,6 +153,47 @@ void RaceSetupScreen::eventCallback(Widget* widget, const std::string& name, con
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void RaceSetupScreen::assignDifficulty()
|
||||
{
|
||||
RibbonWidget* difficulty = getWidget<RibbonWidget>("difficulty");
|
||||
assert(difficulty != NULL);
|
||||
const std::string& difficultySelection = difficulty->getSelectionIDString(PLAYER_ID_GAME_MASTER);
|
||||
|
||||
if (difficultySelection == "novice")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_EASY;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_EASY);
|
||||
}
|
||||
else if (difficultySelection == "intermediate")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_MEDIUM;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_MEDIUM);
|
||||
}
|
||||
else if (difficultySelection == "expert")
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_HARD;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD);
|
||||
}
|
||||
else if (difficultySelection == "best")
|
||||
{
|
||||
if (unlock_manager->getCurrentSlot()->isLocked("difficulty_best"))
|
||||
{
|
||||
unlock_manager->playLockSound();
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_HARD;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD);
|
||||
difficulty->setSelection(2, PLAYER_ID_GAME_MASTER);
|
||||
difficulty->setFocusForPlayer(PLAYER_ID_GAME_MASTER);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_BEST;
|
||||
race_manager->setDifficulty(RaceManager::DIFFICULTY_BEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void RaceSetupScreen::onGameModeChanged()
|
||||
{
|
||||
DynamicRibbonWidget* w2 = getWidget<DynamicRibbonWidget>("gamemode");
|
||||
|
||||
@@ -39,6 +39,8 @@ class RaceSetupScreen : public GUIEngine::Screen, public GUIEngine::ScreenSingle
|
||||
|
||||
void onGameModeChanged();
|
||||
|
||||
void assignDifficulty();
|
||||
|
||||
public:
|
||||
|
||||
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||
|
||||
Reference in New Issue
Block a user