Core/Achievements: Refactored HasAchieved to take only achievement id as parameter

This commit is contained in:
Shauren
2011-12-12 18:19:26 +01:00
parent d588fd4bbe
commit 3ff67fb257
5 changed files with 9 additions and 12 deletions
@@ -451,7 +451,7 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uin
continue; continue;
// don't update already completed criteria if not forced or achievement already complete // don't update already completed criteria if not forced or achievement already complete
if ((IsCompletedCriteria(achievementCriteria, achievement) && !evenIfCriteriaComplete) || HasAchieved(achievement)) if ((IsCompletedCriteria(achievementCriteria, achievement) && !evenIfCriteriaComplete) || HasAchieved(achievement->ID))
continue; continue;
for (uint8 j = 0; j < MAX_CRITERIA_REQUIREMENTS; ++j) for (uint8 j = 0; j < MAX_CRITERIA_REQUIREMENTS; ++j)
@@ -1766,7 +1766,7 @@ void AchievementMgr::CompletedCriteriaFor(AchievementEntry const* achievement)
return; return;
// already completed and stored // already completed and stored
if (HasAchieved(achievement)) if (HasAchieved(achievement->ID))
return; return;
if (IsCompletedAchievement(achievement)) if (IsCompletedAchievement(achievement))
@@ -2000,7 +2000,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
if (m_player->isGameMaster()) if (m_player->isGameMaster())
return; return;
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement)) if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID))
return; return;
SendAchievementEarned(achievement); SendAchievementEarned(achievement);
@@ -2115,9 +2115,9 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket* data) const
*data << int32(-1); *data << int32(-1);
} }
bool AchievementMgr::HasAchieved(AchievementEntry const* achievement) const bool AchievementMgr::HasAchieved(uint32 achievementId) const
{ {
return m_completedAchievements.find(achievement->ID) != m_completedAchievements.end(); return m_completedAchievements.find(achievementId) != m_completedAchievements.end();
} }
bool AchievementMgr::CanUpdateCriteria(AchievementCriteriaEntry const* criteria, AchievementEntry const* achievement) bool AchievementMgr::CanUpdateCriteria(AchievementCriteriaEntry const* criteria, AchievementEntry const* achievement)
@@ -257,7 +257,7 @@ class AchievementMgr
void CheckAllAchievementCriteria(); void CheckAllAchievementCriteria();
void SendAllAchievementData() const; void SendAllAchievementData() const;
void SendRespondInspectAchievements(Player* player) const; void SendRespondInspectAchievements(Player* player) const;
bool HasAchieved(AchievementEntry const* achievement) const; bool HasAchieved(uint32 achievementId) const;
Player* GetPlayer() const { return m_player; } Player* GetPlayer() const { return m_player; }
void UpdateTimedAchievements(uint32 timeDiff); void UpdateTimedAchievements(uint32 timeDiff);
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0); void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
+1 -4
View File
@@ -67,11 +67,8 @@ bool Condition::Meets(Player* player, Unit* invoker)
break; break;
} }
case CONDITION_ACHIEVEMENT: case CONDITION_ACHIEVEMENT:
{ condMeets = player->GetAchievementMgr().HasAchieved(mConditionValue1);
AchievementEntry const* achievement = GetAchievementStore()->LookupEntry(mConditionValue1);
condMeets = player->GetAchievementMgr().HasAchieved(achievement);
break; break;
}
case CONDITION_TEAM: case CONDITION_TEAM:
condMeets = player->GetTeam() == mConditionValue1; condMeets = player->GetTeam() == mConditionValue1;
break; break;
+1 -1
View File
@@ -389,7 +389,7 @@ void LFGMgr::InitializeLockedDungeons(Player* player)
locktype = LFG_LOCKSTATUS_TOO_HIGH_LEVEL; locktype = LFG_LOCKSTATUS_TOO_HIGH_LEVEL;
else if (locktype == LFG_LOCKSTATUS_OK && ar) else if (locktype == LFG_LOCKSTATUS_OK && ar)
{ {
if (ar->achievement && !player->GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement))) if (ar->achievement && !player->GetAchievementMgr().HasAchieved(ar->achievement))
locktype = LFG_LOCKSTATUS_RAID_LOCKED; // FIXME: Check the correct lock value locktype = LFG_LOCKSTATUS_RAID_LOCKED; // FIXME: Check the correct lock value
else if (player->GetTeam() == ALLIANCE && ar->quest_A && !player->GetQuestRewardStatus(ar->quest_A)) else if (player->GetTeam() == ALLIANCE && ar->quest_A && !player->GetQuestRewardStatus(ar->quest_A))
locktype = LFG_LOCKSTATUS_QUEST_NOT_COMPLETED; locktype = LFG_LOCKSTATUS_QUEST_NOT_COMPLETED;
+1 -1
View File
@@ -18121,7 +18121,7 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report
missingQuest = ar->quest_H; missingQuest = ar->quest_H;
uint32 missingAchievement = 0; uint32 missingAchievement = 0;
if (ar->achievement && !GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement))) if (ar->achievement && !GetAchievementMgr().HasAchieved(ar->achievement))
missingAchievement = ar->achievement; missingAchievement = ar->achievement;
Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid()); Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid());