Bugfix: onRaceEnd was not called for achievements (resulting in

achievements not being reset at end of a race).
This commit is contained in:
hiker
2014-03-12 22:40:43 +11:00
parent be9d7292f2
commit 4eb4ce1511
4 changed files with 14 additions and 10 deletions

View File

@@ -110,7 +110,7 @@ Achievement * AchievementsStatus::getAchievement(uint32_t id)
if ( m_achievements.find(id) != m_achievements.end())
return m_achievements[id];
return NULL;
}
} // getAchievement
// ----------------------------------------------------------------------------
void AchievementsStatus::sync(const std::vector<uint32_t> & achieved_ids)
@@ -121,7 +121,7 @@ void AchievementsStatus::sync(const std::vector<uint32_t> & achieved_ids)
if(achievement != NULL)
achievement->setAchieved();
}
}
} // sync
// ----------------------------------------------------------------------------
void AchievementsStatus::onRaceEnd()
@@ -131,4 +131,4 @@ void AchievementsStatus::onRaceEnd()
for ( iter = m_achievements.begin(); iter != m_achievements.end(); ++iter ) {
iter->second->onRaceEnd();
}
}
} // onRaceEnd

View File

@@ -101,6 +101,15 @@ void PlayerProfile::incrementUseFrequency()
else m_use_frequency++;
} // incrementUseFrequency
// ------------------------------------------------------------------------
/** Notification of a finished race, which can trigger fulfilling
* challenges. */
void PlayerProfile::raceFinished()
{
m_story_mode_status->raceFinished();
m_achievements_status->onRaceEnd();
} // raceFinished
//------------------------------------------------------------------------------
/** Comparison used to sort players.
*/

View File

@@ -77,7 +77,7 @@ public:
void incrementUseFrequency();
bool operator<(const PlayerProfile &other);
bool operator>(const PlayerProfile &other);
void raceFinished();
// ------------------------------------------------------------------------
~PlayerProfile()
@@ -148,10 +148,6 @@ public:
m_story_mode_status->setCurrentChallenge(name);
} // setCurrentChallenge
// ------------------------------------------------------------------------
/** Notification of a finished race, which can trigger fulfilling
* challenges. */
void raceFinished() { m_story_mode_status->raceFinished(); }
// ------------------------------------------------------------------------
/** Callback when a GP is finished (to test if a challenge was
* fulfilled). */
void grandPrixFinished() { m_story_mode_status->grandPrixFinished(); }

View File

@@ -443,12 +443,11 @@ void World::terminateRace()
{
updateHighscores(&best_highscore_rank, &best_finish_time, &highscore_who,
&best_player);
PlayerManager::get()->getCurrentPlayer()->raceFinished();
}
PlayerManager::get()->getCurrentPlayer()->raceFinished();
PlayerManager::increaseAchievement(AchievementInfo::ACHIEVE_COLUMBUS,
getTrack()->getIdent(), 1);
PlayerManager::get()->getCurrentPlayer()->raceFinished();
if (m_race_gui) m_race_gui->clearAllMessages();
// we can't delete the race gui here, since it is needed in case of