aboutsummaryrefslogtreecommitdiff
path: root/src/game/SocialMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SocialMgr.cpp')
-rw-r--r--src/game/SocialMgr.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/game/SocialMgr.cpp b/src/game/SocialMgr.cpp
index 9005c2820eb..83995b875ca 100644
--- a/src/game/SocialMgr.cpp
+++ b/src/game/SocialMgr.cpp
@@ -41,11 +41,30 @@ PlayerSocial::~PlayerSocial()
m_playerSocialMap.clear();
}
+uint32 PlayerSocial::GetNumberOfSocialsWithFlag(SocialFlag flag)
+{
+ uint32 counter = 0;
+ for(PlayerSocialMap::iterator itr = m_playerSocialMap.begin(); itr != m_playerSocialMap.end(); ++itr)
+ {
+ if(itr->second.Flags & flag)
+ counter++;
+ }
+ return counter;
+}
+
bool PlayerSocial::AddToSocialList(uint32 friend_guid, bool ignore)
{
- // client limit
- if(m_playerSocialMap.size() >= 50)
- return false;
+ // check client limits
+ if(ignore)
+ {
+ if(GetNumberOfSocialsWithFlag(SOCIAL_FLAG_IGNORED) >= SOCIALMGR_IGNORE_LIMIT)
+ return false;
+ }
+ else
+ {
+ if(GetNumberOfSocialsWithFlag(SOCIAL_FLAG_FRIEND) >= SOCIALMGR_FRIEND_LIMIT)
+ return false;
+ }
uint32 flag = SOCIAL_FLAG_FRIEND;
if(ignore)