From: <au...@us...> - 2013-06-19 23:21:26
|
Revision: 12891 http://sourceforge.net/p/supertuxkart/code/12891 Author: auria Date: 2013-06-19 23:21:22 +0000 (Wed, 19 Jun 2013) Log Message: ----------- Lock the highest difficulty until the game was beaten Modified Paths: -------------- main/trunk/data/challenges/fortmagma.challenge main/trunk/src/challenges/challenge_data.cpp main/trunk/src/states_screens/race_setup_screen.cpp Modified: main/trunk/data/challenges/fortmagma.challenge =================================================================== --- main/trunk/data/challenges/fortmagma.challenge 2013-06-19 22:27:50 UTC (rev 12890) +++ main/trunk/data/challenges/fortmagma.challenge 2013-06-19 23:21:22 UTC (rev 12891) @@ -19,5 +19,6 @@ <unlock kart="gnu"/> <unlock kart="nolok"/> + <unlock difficulty="difficulty_best"/> <unlock track="fortmagma"/> </challenge> Modified: main/trunk/src/challenges/challenge_data.cpp =================================================================== --- main/trunk/src/challenges/challenge_data.cpp 2013-06-19 22:27:50 UTC (rev 12890) +++ main/trunk/src/challenges/challenge_data.cpp 2013-06-19 23:21:22 UTC (rev 12891) @@ -331,9 +331,7 @@ } case UNLOCK_DIFFICULTY: { - //TODO: difficulty names when unlocking - irr::core::stringw user_name = "?"; - addUnlockDifficultyReward(id, user_name); + addUnlockDifficultyReward(id, core::stringw(id.c_str())); break; } case UNLOCK_KART: { Modified: main/trunk/src/states_screens/race_setup_screen.cpp =================================================================== --- main/trunk/src/states_screens/race_setup_screen.cpp 2013-06-19 22:27:50 UTC (rev 12890) +++ main/trunk/src/states_screens/race_setup_screen.cpp 2013-06-19 23:21:22 UTC (rev 12891) @@ -98,8 +98,19 @@ } else if (selection == "best") { - UserConfigParams::m_difficulty = RaceManager::DIFFICULTY_BEST; - race_manager->setDifficulty(RaceManager::DIFFICULTY_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); + } } } else if (name == "gamemode") @@ -169,6 +180,7 @@ { StateManager::get()->escapePressed(); } + } // eventCallback // ----------------------------------------------------------------------------- @@ -203,8 +215,17 @@ Screen::init(); RibbonWidget* w = getWidget<RibbonWidget>("difficulty"); assert( w != NULL ); - w->setSelection( UserConfigParams::m_difficulty, PLAYER_ID_GAME_MASTER ); + if (UserConfigParams::m_difficulty == RaceManager::DIFFICULTY_BEST && + unlock_manager->getCurrentSlot()->isLocked("difficulty_best")) + { + w->setSelection(RaceManager::DIFFICULTY_HARD, PLAYER_ID_GAME_MASTER); + } + else + { + w->setSelection( UserConfigParams::m_difficulty, PLAYER_ID_GAME_MASTER ); + } + SpinnerWidget* kartamount = getWidget<SpinnerWidget>("aikartamount"); kartamount->setActivated(); @@ -306,6 +327,18 @@ m_mode_listener = new GameModeRibbonListener(this); w2->registerHoverListener(m_mode_listener); + + + if (unlock_manager->getCurrentSlot()->isLocked("difficulty_best")) + { + RibbonWidget* w = getWidget<RibbonWidget>("difficulty"); + assert(w != NULL); + + int index = w->findItemNamed("best"); + Widget* hardestWidget = &w->getChildren()[index]; + hardestWidget->setBadge(LOCKED_BADGE); + hardestWidget->setDeactivated(); + } } // init // ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |