aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/AchievementMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp122
1 files changed, 63 insertions, 59 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 46f7efcad84..1f66c00786f 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -39,7 +39,7 @@
struct VisibleAchievementCheck
{
- AchievementEntry const* operator()(std::pair<uint32, CompletedAchievementData> const& val)
+ AchievementEntry const* operator()(std::pair<uint32 const, CompletedAchievementData> const& val)
{
AchievementEntry const* achievement = sAchievementStore.LookupEntry(val.first);
if (achievement && !(achievement->Flags & ACHIEVEMENT_FLAG_HIDDEN))
@@ -221,10 +221,10 @@ void PlayerAchievementMgr::Reset()
{
AchievementMgr::Reset();
- for (auto iter = _completedAchievements.begin(); iter != _completedAchievements.end(); ++iter)
+ for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
WorldPackets::Achievement::AchievementDeleted achievementDeleted;
- achievementDeleted.AchievementID = iter->first;
+ achievementDeleted.AchievementID = completedAchievement.first;
SendPacket(achievementDeleted.Write());
}
@@ -319,49 +319,49 @@ void PlayerAchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans)
{
if (!_completedAchievements.empty())
{
- for (auto iter = _completedAchievements.begin(); iter != _completedAchievements.end(); ++iter)
+ for (std::pair<uint32 const, CompletedAchievementData>& completedAchievement : _completedAchievements)
{
- if (!iter->second.Changed)
+ if (!completedAchievement.second.Changed)
continue;
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT);
- stmt->setUInt32(0, iter->first);
+ stmt->setUInt32(0, completedAchievement.first);
stmt->setUInt64(1, _owner->GetGUID().GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACHIEVEMENT);
stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- stmt->setUInt32(1, iter->first);
- stmt->setInt64(2, iter->second.Date);
+ stmt->setUInt32(1, completedAchievement.first);
+ stmt->setInt64(2, completedAchievement.second.Date);
trans->Append(stmt);
- iter->second.Changed = false;
+ completedAchievement.second.Changed = false;
}
}
if (!_criteriaProgress.empty())
{
- for (auto iter = _criteriaProgress.begin(); iter != _criteriaProgress.end(); ++iter)
+ for (std::pair<uint32 const, CriteriaProgress>& criteriaProgres : _criteriaProgress)
{
- if (!iter->second.Changed)
+ if (!criteriaProgres.second.Changed)
continue;
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS_BY_CRITERIA);
stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- stmt->setUInt32(1, iter->first);
+ stmt->setUInt32(1, criteriaProgres.first);
trans->Append(stmt);
- if (iter->second.Counter)
+ if (criteriaProgres.second.Counter)
{
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACHIEVEMENT_PROGRESS);
stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- stmt->setUInt32(1, iter->first);
- stmt->setUInt64(2, iter->second.Counter);
- stmt->setInt64(3, iter->second.Date);
+ stmt->setUInt32(1, criteriaProgres.first);
+ stmt->setUInt64(2, criteriaProgres.second.Counter);
+ stmt->setInt64(3, criteriaProgres.second.Date);
trans->Append(stmt);
}
- iter->second.Changed = false;
+ criteriaProgres.second.Changed = false;
}
}
}
@@ -407,15 +407,15 @@ void PlayerAchievementMgr::SendAllData(Player const* /*receiver*/) const
achievementData.Data.Earned.reserve(_completedAchievements.size());
achievementData.Data.Progress.reserve(_criteriaProgress.size());
- for (auto itr = _completedAchievements.begin(); itr != _completedAchievements.end(); ++itr)
+ for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
- AchievementEntry const* achievement = filterInvisible(*itr);
+ AchievementEntry const* achievement = filterInvisible(completedAchievement);
if (!achievement)
continue;
WorldPackets::Achievement::EarnedAchievement earned;
- earned.Id = itr->first;
- earned.Date = itr->second.Date;
+ earned.Id = completedAchievement.first;
+ earned.Date = completedAchievement.second.Date;
if (!(achievement->Flags & ACHIEVEMENT_FLAG_ACCOUNT))
{
earned.Owner = _owner->GetGUID();
@@ -424,16 +424,16 @@ void PlayerAchievementMgr::SendAllData(Player const* /*receiver*/) const
achievementData.Data.Earned.push_back(earned);
}
- for (auto itr = _criteriaProgress.begin(); itr != _criteriaProgress.end(); ++itr)
+ for (std::pair<uint32 const, CriteriaProgress> const& criteriaProgres : _criteriaProgress)
{
- Criteria const* criteria = sCriteriaMgr->GetCriteria(itr->first);
+ Criteria const* criteria = sCriteriaMgr->GetCriteria(criteriaProgres.first);
WorldPackets::Achievement::CriteriaProgress progress;
- progress.Id = itr->first;
- progress.Quantity = itr->second.Counter;
- progress.Player = itr->second.PlayerGUID;
+ progress.Id = criteriaProgres.first;
+ progress.Quantity = criteriaProgres.second.Counter;
+ progress.Player = criteriaProgres.second.PlayerGUID;
progress.Flags = 0;
- progress.Date = itr->second.Date;
+ progress.Date = criteriaProgres.second.Date;
progress.TimeFromStart = Seconds::zero();
progress.TimeFromCreate = Seconds::zero();
achievementData.Data.Progress.push_back(progress);
@@ -441,11 +441,11 @@ void PlayerAchievementMgr::SendAllData(Player const* /*receiver*/) const
if (criteria->FlagsCu & CRITERIA_FLAG_CU_ACCOUNT)
{
WorldPackets::Achievement::CriteriaProgress progress;
- progress.Id = itr->first;
- progress.Quantity = itr->second.Counter;
+ progress.Id = criteriaProgres.first;
+ progress.Quantity = criteriaProgres.second.Counter;
progress.Player = _owner->GetSession()->GetBattlenetAccountGUID();
progress.Flags = 0;
- progress.Date = itr->second.Date;
+ progress.Date = criteriaProgres.second.Date;
progress.TimeFromStart = Seconds::zero();
progress.TimeFromCreate = Seconds::zero();
allAccountCriteria.Progress.push_back(progress);
@@ -466,15 +466,15 @@ void PlayerAchievementMgr::SendAchievementInfo(Player* receiver, uint32 /*achiev
inspectedAchievements.Data.Earned.reserve(_completedAchievements.size());
inspectedAchievements.Data.Progress.reserve(_criteriaProgress.size());
- for (auto itr = _completedAchievements.begin(); itr != _completedAchievements.end(); ++itr)
+ for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
- AchievementEntry const* achievement = filterInvisible(*itr);
+ AchievementEntry const* achievement = filterInvisible(completedAchievement);
if (!achievement)
continue;
WorldPackets::Achievement::EarnedAchievement earned;
- earned.Id = itr->first;
- earned.Date = itr->second.Date;
+ earned.Id = completedAchievement.first;
+ earned.Date = completedAchievement.second.Date;
if (!(achievement->Flags & ACHIEVEMENT_FLAG_ACCOUNT))
{
earned.Owner = _owner->GetGUID();
@@ -483,14 +483,14 @@ void PlayerAchievementMgr::SendAchievementInfo(Player* receiver, uint32 /*achiev
inspectedAchievements.Data.Earned.push_back(earned);
}
- for (auto itr = _criteriaProgress.begin(); itr != _criteriaProgress.end(); ++itr)
+ for (std::pair<uint32 const, CriteriaProgress> const& criteriaProgres : _criteriaProgress)
{
WorldPackets::Achievement::CriteriaProgress progress;
- progress.Id = itr->first;
- progress.Quantity = itr->second.Counter;
- progress.Player = itr->second.PlayerGUID;
+ progress.Id = criteriaProgres.first;
+ progress.Quantity = criteriaProgres.second.Counter;
+ progress.Player = criteriaProgres.second.PlayerGUID;
progress.Flags = 0;
- progress.Date = itr->second.Date;
+ progress.Date = criteriaProgres.second.Date;
progress.TimeFromStart = Seconds::zero();
progress.TimeFromCreate = Seconds::zero();
inspectedAchievements.Data.Progress.push_back(progress);
@@ -711,10 +711,10 @@ void GuildAchievementMgr::Reset()
AchievementMgr::Reset();
ObjectGuid guid = _owner->GetGUID();
- for (auto iter = _completedAchievements.begin(); iter != _completedAchievements.end(); ++iter)
+ for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
WorldPackets::Achievement::GuildAchievementDeleted guildAchievementDeleted;
- guildAchievementDeleted.AchievementID = iter->first;
+ guildAchievementDeleted.AchievementID = completedAchievement.first;
guildAchievementDeleted.GuildGUID = guid;
guildAchievementDeleted.TimeDeleted = GameTime::GetGameTime();
SendPacket(guildAchievementDeleted.Write());
@@ -805,46 +805,50 @@ void GuildAchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans)
{
CharacterDatabasePreparedStatement* stmt;
std::ostringstream guidstr;
- for (auto itr = _completedAchievements.begin(); itr != _completedAchievements.end(); ++itr)
+ for (std::pair<uint32 const, CompletedAchievementData>& completedAchievement : _completedAchievements)
{
- if (!itr->second.Changed)
+ if (!completedAchievement.second.Changed)
continue;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_ACHIEVEMENT);
stmt->setUInt64(0, _owner->GetId());
- stmt->setUInt32(1, itr->first);
+ stmt->setUInt32(1, completedAchievement.first);
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_ACHIEVEMENT);
stmt->setUInt64(0, _owner->GetId());
- stmt->setUInt32(1, itr->first);
- stmt->setInt64(2, itr->second.Date);
- for (GuidSet::const_iterator gItr = itr->second.CompletingPlayers.begin(); gItr != itr->second.CompletingPlayers.end(); ++gItr)
- guidstr << gItr->GetCounter() << ',';
+ stmt->setUInt32(1, completedAchievement.first);
+ stmt->setInt64(2, completedAchievement.second.Date);
+ for (ObjectGuid memberGuid : completedAchievement.second.CompletingPlayers)
+ guidstr << memberGuid.GetCounter() << ',';
stmt->setString(3, guidstr.str());
trans->Append(stmt);
guidstr.str("");
+
+ completedAchievement.second.Changed = false;
}
- for (auto itr = _criteriaProgress.begin(); itr != _criteriaProgress.end(); ++itr)
+ for (std::pair<uint32 const, CriteriaProgress>& criteriaProgres : _criteriaProgress)
{
- if (!itr->second.Changed)
+ if (!criteriaProgres.second.Changed)
continue;
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_ACHIEVEMENT_CRITERIA);
stmt->setUInt64(0, _owner->GetId());
- stmt->setUInt32(1, itr->first);
+ stmt->setUInt32(1, criteriaProgres.first);
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_ACHIEVEMENT_CRITERIA);
stmt->setUInt64(0, _owner->GetId());
- stmt->setUInt32(1, itr->first);
- stmt->setUInt64(2, itr->second.Counter);
- stmt->setInt64(3, itr->second.Date);
- stmt->setUInt64(4, itr->second.PlayerGUID.GetCounter());
+ stmt->setUInt32(1, criteriaProgres.first);
+ stmt->setUInt64(2, criteriaProgres.second.Counter);
+ stmt->setInt64(3, criteriaProgres.second.Date);
+ stmt->setUInt64(4, criteriaProgres.second.PlayerGUID.GetCounter());
trans->Append(stmt);
+
+ criteriaProgres.second.Changed = false;
}
}
@@ -854,15 +858,15 @@ void GuildAchievementMgr::SendAllData(Player const* receiver) const
WorldPackets::Achievement::AllGuildAchievements allGuildAchievements;
allGuildAchievements.Earned.reserve(_completedAchievements.size());
- for (auto itr = _completedAchievements.begin(); itr != _completedAchievements.end(); ++itr)
+ for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
- AchievementEntry const* achievement = filterInvisible(*itr);
+ AchievementEntry const* achievement = filterInvisible(completedAchievement);
if (!achievement)
continue;
WorldPackets::Achievement::EarnedAchievement earned;
- earned.Id = itr->first;
- earned.Date = itr->second.Date;
+ earned.Id = completedAchievement.first;
+ earned.Date = completedAchievement.second.Date;
allGuildAchievements.Earned.push_back(earned);
}