diff options
| author | DDuarte <dnpd.dd@gmail.com> | 2014-09-02 14:33:31 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-09-02 14:33:31 +0100 |
| commit | 7ec22c534e8120f2f877e8d31bc3168faccff5ec (patch) | |
| tree | 9fa117aa24b5f8dbd7febc5caea5679377535b92 /src/server/game/Guilds/Guild.cpp | |
| parent | e0f7cd151451863b29e800b10e5c5fe90f3627ef (diff) | |
Core/Guild: Only send achievement criteria updates to players that requested them
Implements CMSG_GUILD_SET_ACHIEVEMENT_TRACKING
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 8cfa6a4e681..3ee01c88c3f 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1562,6 +1562,12 @@ void Guild::SendGuildRankInfo(WorldSession* session) const TC_LOG_DEBUG("guild", "SMSG_GUILD_RANK [%s]", session->GetPlayerInfo().c_str()); } +void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32> const& criteriaIds) +{ + if (Member* member = GetMember(session->GetPlayer()->GetGUID())) + member->SetTrackedCriteriaIds(criteriaIds); +} + void Guild::HandleSetMOTD(WorldSession* session, std::string const& motd) { if (m_motd == motd) @@ -2603,6 +2609,14 @@ void Guild::BroadcastPacket(WorldPacket* packet) const player->GetSession()->SendPacket(packet); } +void Guild::BroadcastPacketIfTrackingAchievement(WorldPacket* packet, uint32 criteriaId) const +{ + for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr) + if (itr->second->IsTrackingCriteriaId(criteriaId)) + if (Player* player = itr->second->FindPlayer()) + player->GetSession()->SendPacket(packet); +} + void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank) { uint32 count = 0; |
