diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2015-02-08 02:51:49 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2015-02-08 02:51:49 +0100 |
| commit | e01bb918875f88ede211fc13ff3908e30249de33 (patch) | |
| tree | b4f97cdae4b08103833b5cabd6f9773d2f452721 /src/server/game/Entities/Player | |
| parent | 8fd7f80b6b20071227e849365709ab3f6403efb4 (diff) | |
Core/Packets: updated some contactlist packets
Diffstat (limited to 'src/server/game/Entities/Player')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 19 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/SocialMgr.cpp | 228 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/SocialMgr.h | 76 |
4 files changed, 138 insertions, 192 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 84197b90626..a26a728de81 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4498,16 +4498,15 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe // Delete char from social list of online chars stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_SOCIAL); stmt->setUInt64(0, guid); - PreparedQueryResult resultFriends = CharacterDatabase.Query(stmt); - if (resultFriends) + if (PreparedQueryResult resultFriends = CharacterDatabase.Query(stmt)) { do { - if (Player* pFriend = ObjectAccessor::FindPlayer(ObjectGuid::Create<HighGuid::Player>((*resultFriends)[0].GetUInt64()))) + if (Player* playerFriend = ObjectAccessor::FindPlayer(ObjectGuid::Create<HighGuid::Player>((*resultFriends)[0].GetUInt64()))) { - pFriend->GetSocial()->RemoveFromSocialList(playerguid, false); - sSocialMgr->SendFriendStatus(pFriend, FRIEND_REMOVED, playerguid, false); + playerFriend->GetSocial()->RemoveFromSocialList(playerguid, SOCIAL_FLAG_ALL); + sSocialMgr->SendFriendStatus(playerFriend, FRIEND_REMOVED, playerguid); } } while (resultFriends->NextRow()); } @@ -17580,7 +17579,7 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) if (Item* item = _LoadItem(trans, zoneId, timeDiff, fields)) { ObjectGuid bagGuid = fields[15].GetUInt64() ? ObjectGuid::Create<HighGuid::Item>(fields[15].GetUInt64()) : ObjectGuid::Empty; - uint8 slot = fields[16].GetUInt8(); + uint8 slot = fields[16].GetUInt8(); uint8 err = EQUIP_ERR_OK; // Item is not in bag @@ -22811,7 +22810,7 @@ void Player::SetGroup(Group* group, int8 subgroup) void Player::SendInitialPacketsBeforeAddToMap() { /// Pass 'this' as argument because we're not stored in ObjectAccessor yet - GetSocial()->SendSocialList(this); + GetSocial()->SendSocialList(this, SOCIAL_FLAG_ALL); /// SMSG_SPELL_CATEGORY_COOLDOWN GetSession()->SendSpellCategoryCooldowns(); @@ -27233,3 +27232,9 @@ void Player::RemoveSpecializationSpells() } } } + +void Player::RemoveSocial() +{ + sSocialMgr->RemovePlayerSocial(GetGUID()); + m_social = nullptr; +} diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index ec8c5933e25..e3e927bee7b 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1384,7 +1384,8 @@ class Player : public Unit, public GridObject<Player> uint32 GetBarberShopCost(uint8 newhairstyle, uint8 newhaircolor, uint8 newfacialhair, BarberShopStyleEntry const* newSkin=NULL); - PlayerSocial *GetSocial() { return m_social; } + PlayerSocial* GetSocial() { return m_social; } + void RemoveSocial(); PlayerTaxi m_taxi; void InitTaxiNodesForLevel() { m_taxi.InitTaxiNodesForLevel(getRace(), getClass(), getLevel()); } @@ -1835,7 +1836,7 @@ class Player : public Unit, public GridObject<Player> uint32 GetMailSize() { return m_mail.size();} Mail* GetMail(uint32 id); - PlayerMails const& GetMails() const { return m_mail; } + PlayerMails const& GetMails() const { return m_mail; } void SendItemRetrievalMail(uint32 itemEntry, uint32 count); // Item retrieval mails sent by The Postmaster (34337), used in multiple places. @@ -2912,7 +2913,7 @@ class Player : public Unit, public GridObject<Player> ////////////////////Rest System///////////////////// // Social - PlayerSocial *m_social; + PlayerSocial* m_social; // Groups GroupReference m_group; diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 3b7eba89b58..9d91f8792a4 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -17,60 +17,45 @@ */ #include "SocialMgr.h" - #include "DatabaseEnv.h" -#include "WorldSession.h" -#include "WorldPacket.h" #include "Player.h" -#include "ObjectMgr.h" +#include "SocialPackets.h" #include "World.h" -#include "Util.h" -#include "AccountMgr.h" #include "WorldSession.h" uint32 PlayerSocial::GetNumberOfSocialsWithFlag(SocialFlag flag) { uint32 counter = 0; - for (PlayerSocialMap::const_iterator itr = m_playerSocialMap.begin(); itr != m_playerSocialMap.end(); ++itr) - if (itr->second.Flags & flag) + for (PlayerSocialMap::const_iterator itr = _playerSocialMap.begin(); itr != _playerSocialMap.end(); ++itr) + if ((itr->second.Flags & flag) != 0) ++counter; return counter; } -bool PlayerSocial::AddToSocialList(ObjectGuid const& friendGuid, bool ignore) +bool PlayerSocial::AddToSocialList(ObjectGuid const& friendGuid, SocialFlag flag) { // 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; - } + if (GetNumberOfSocialsWithFlag(flag) >= (((flag & SOCIAL_FLAG_FRIEND) != 0) ? SOCIALMGR_FRIEND_LIMIT : SOCIALMGR_IGNORE_LIMIT)) + return false; - uint8 flag = SOCIAL_FLAG_FRIEND; - if (ignore) - flag = SOCIAL_FLAG_IGNORED; - - PlayerSocialMap::const_iterator itr = m_playerSocialMap.find(friendGuid); - if (itr != m_playerSocialMap.end()) + PlayerSocialMap::iterator itr = _playerSocialMap.find(friendGuid); + if (itr != _playerSocialMap.end()) { - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_CHARACTER_SOCIAL_FLAGS); + itr->second.Flags |= flag; + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_SOCIAL_FLAGS); - stmt->setUInt8(0, flag); + stmt->setUInt8(0, itr->second.Flags); stmt->setUInt64(1, GetPlayerGUID().GetCounter()); stmt->setUInt64(2, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); - - m_playerSocialMap[friendGuid].Flags |= flag; } else { + _playerSocialMap[friendGuid].Flags |= flag; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SOCIAL); stmt->setUInt64(0, GetPlayerGUID().GetCounter()); @@ -78,26 +63,20 @@ bool PlayerSocial::AddToSocialList(ObjectGuid const& friendGuid, bool ignore) stmt->setUInt8(2, flag); CharacterDatabase.Execute(stmt); - - FriendInfo fi; - fi.Flags |= flag; - m_playerSocialMap[friendGuid] = fi; } + return true; } -void PlayerSocial::RemoveFromSocialList(ObjectGuid const& friendGuid, bool ignore) +void PlayerSocial::RemoveFromSocialList(ObjectGuid const& friendGuid, SocialFlag flag) { - PlayerSocialMap::iterator itr = m_playerSocialMap.find(friendGuid); - if (itr == m_playerSocialMap.end()) // not exist + PlayerSocialMap::iterator itr = _playerSocialMap.find(friendGuid); + if (itr == _playerSocialMap.end()) return; - uint8 flag = SOCIAL_FLAG_FRIEND; - if (ignore) - flag = SOCIAL_FLAG_IGNORED; - itr->second.Flags &= ~flag; - if (itr->second.Flags == 0) + + if (!itr->second.Flags) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SOCIAL); @@ -106,13 +85,13 @@ void PlayerSocial::RemoveFromSocialList(ObjectGuid const& friendGuid, bool ignor CharacterDatabase.Execute(stmt); - m_playerSocialMap.erase(itr); + _playerSocialMap.erase(itr); } else { - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_REM_CHARACTER_SOCIAL_FLAGS); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_SOCIAL_FLAGS); - stmt->setUInt8(0, flag); + stmt->setUInt8(0, itr->second.Flags); stmt->setUInt64(1, GetPlayerGUID().GetCounter()); stmt->setUInt64(2, friendGuid.GetCounter()); @@ -120,80 +99,68 @@ void PlayerSocial::RemoveFromSocialList(ObjectGuid const& friendGuid, bool ignor } } -void PlayerSocial::SetFriendNote(ObjectGuid const& friendGuid, std::string note) +void PlayerSocial::SetFriendNote(ObjectGuid const& friendGuid, std::string const& note) { - PlayerSocialMap::const_iterator itr = m_playerSocialMap.find(friendGuid); - if (itr == m_playerSocialMap.end()) // not exist + PlayerSocialMap::iterator itr = _playerSocialMap.find(friendGuid); + if (itr == _playerSocialMap.end()) // not exist return; - utf8truncate(note, 48); // DB and client size limitation + itr->second.Note = note; + utf8truncate(itr->second.Note, 48); // DB and client size limitation PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_SOCIAL_NOTE); - stmt->setString(0, note); + stmt->setString(0, itr->second.Note); stmt->setUInt64(1, GetPlayerGUID().GetCounter()); stmt->setUInt64(2, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); - - m_playerSocialMap[friendGuid].Note = note; } -void PlayerSocial::SendSocialList(Player* player) +void PlayerSocial::SendSocialList(Player* player, uint32 flags) { - if (!player) - return; + ASSERT(player); - uint32 size = m_playerSocialMap.size(); + WorldPackets::Social::ContactList contactList; + contactList.Flags = flags; - WorldPacket data(SMSG_CONTACT_LIST, (4+4+size*25)); // just can guess size - data << uint32(7); // 0x1 = Friendlist update. 0x2 = Ignorelist update. 0x4 = Mutelist update. - data << uint32(size); // friends count - - for (PlayerSocialMap::iterator itr = m_playerSocialMap.begin(); itr != m_playerSocialMap.end(); ++itr) + for (PlayerSocialMap::value_type& v : _playerSocialMap) { - sSocialMgr->GetFriendInfo(player, itr->first, itr->second); + if (!(v.second.Flags & flags)) + continue; - data << itr->first; // player guid - data << uint32(itr->second.Flags); // player flag (0x1 = Friend, 0x2 = Ignored, 0x4 = Muted) - data << itr->second.Note; // string note - if (itr->second.Flags & SOCIAL_FLAG_FRIEND) // if IsFriend() - { - data << uint8(itr->second.Status); // online/offline/etc? - if (itr->second.Status) // if online - { - data << uint32(itr->second.Area); // player area - data << uint32(itr->second.Level); // player level - data << uint32(itr->second.Class); // player class - } - } + sSocialMgr->GetFriendInfo(player, v.first, v.second); + + contactList.Contacts.emplace_back(v.first, v.second); + + // client's friends list and ignore list limit + if (contactList.Contacts.size() >= (((flags & SOCIAL_FLAG_FRIEND) != 0) ? SOCIALMGR_FRIEND_LIMIT : SOCIALMGR_IGNORE_LIMIT)) + break; } - player->GetSession()->SendPacket(&data); - TC_LOG_DEBUG("network", "WORLD: Sent SMSG_CONTACT_LIST"); + player->SendDirectMessage(contactList.Write()); } -bool PlayerSocial::HasFriend(ObjectGuid const& friendGuid) +bool PlayerSocial::_HasContact(ObjectGuid const& guid, SocialFlag flags) { - PlayerSocialMap::const_iterator itr = m_playerSocialMap.find(friendGuid); - if (itr != m_playerSocialMap.end()) - return itr->second.Flags & SOCIAL_FLAG_FRIEND; + PlayerSocialMap::const_iterator itr = _playerSocialMap.find(guid); + if (itr != _playerSocialMap.end()) + return (itr->second.Flags & flags) != 0; + return false; } -bool PlayerSocial::HasIgnore(ObjectGuid const& ignore_guid) +bool PlayerSocial::HasFriend(ObjectGuid const& friendGuid) { - PlayerSocialMap::const_iterator itr = m_playerSocialMap.find(ignore_guid); - if (itr != m_playerSocialMap.end()) - return (itr->second.Flags & SOCIAL_FLAG_IGNORED) != 0; - return false; + return _HasContact(friendGuid, SOCIAL_FLAG_FRIEND); } -SocialMgr::SocialMgr() { } - -SocialMgr::~SocialMgr() { } +bool PlayerSocial::HasIgnore(ObjectGuid const& ignoreGuid) +{ + return _HasContact(ignoreGuid, SOCIAL_FLAG_IGNORED); +} -void SocialMgr::GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo &friendInfo) +void SocialMgr::GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo& friendInfo) { if (!player) return; @@ -207,8 +174,8 @@ void SocialMgr::GetFriendInfo(Player* player, ObjectGuid const& friendGUID, Frie if (!target) return; - PlayerSocialMap::iterator itr = player->GetSocial()->m_playerSocialMap.find(friendGUID); - if (itr != player->GetSocial()->m_playerSocialMap.end()) + PlayerSocial::PlayerSocialMap::iterator itr = player->GetSocial()->_playerSocialMap.find(friendGUID); + if (itr != player->GetSocial()->_playerSocialMap.end()) friendInfo.Note = itr->second.Note; // PLAYER see his team only and PLAYER can't see MODERATOR, GAME MASTER, ADMINISTRATOR characters @@ -237,59 +204,29 @@ void SocialMgr::GetFriendInfo(Player* player, ObjectGuid const& friendGUID, Frie } } -void SocialMgr::MakeFriendStatusPacket(FriendsResult result, ObjectGuid const& guid, WorldPacket* data) -{ - data->Initialize(SMSG_FRIEND_STATUS, 9); - *data << uint8(result); - *data << guid; -} - -void SocialMgr::SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast) +void SocialMgr::SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast /*= false*/) { FriendInfo fi; - - WorldPacket data; - MakeFriendStatusPacket(result, friendGuid, &data); GetFriendInfo(player, friendGuid, fi); - switch (result) - { - case FRIEND_ADDED_OFFLINE: - case FRIEND_ADDED_ONLINE: - data << fi.Note; - break; - default: - break; - } - switch (result) - { - case FRIEND_ADDED_ONLINE: - case FRIEND_ONLINE: - data << uint8(fi.Status); - data << uint32(fi.Area); - data << uint32(fi.Level); - data << uint32(fi.Class); - break; - default: - break; - } + WorldPackets::Social::FriendStatus friendStatus; + friendStatus.Initialize(friendGuid, result, fi); if (broadcast) - BroadcastToFriendListers(player, &data); + BroadcastToFriendListers(player, friendStatus.Write()); else - player->GetSession()->SendPacket(&data); + player->SendDirectMessage(friendStatus.Write()); } -void SocialMgr::BroadcastToFriendListers(Player* player, WorldPacket* packet) +void SocialMgr::BroadcastToFriendListers(Player* player, WorldPacket const* packet) { - if (!player) - return; + ASSERT(player); AccountTypes gmSecLevel = AccountTypes(sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_WHO_LIST)); - for (SocialMap::const_iterator itr = m_socialMap.begin(); itr != m_socialMap.end(); ++itr) + for (SocialMap::const_iterator itr = _socialMap.begin(); itr != _socialMap.end(); ++itr) { - PlayerSocialMap::const_iterator itr2 = itr->second.m_playerSocialMap.find(player->GetGUID()); - if (itr2 != itr->second.m_playerSocialMap.end() && (itr2->second.Flags & SOCIAL_FLAG_FRIEND)) + PlayerSocial::PlayerSocialMap::const_iterator itr2 = itr->second._playerSocialMap.find(player->GetGUID()); + if (itr2 != itr->second._playerSocialMap.end() && (itr2->second.Flags & SOCIAL_FLAG_FRIEND) != 0) { Player* target = ObjectAccessor::FindPlayer(itr->first); if (!target) @@ -310,31 +247,22 @@ void SocialMgr::BroadcastToFriendListers(Player* player, WorldPacket* packet) PlayerSocial* SocialMgr::LoadFromDB(PreparedQueryResult result, ObjectGuid const& guid) { - PlayerSocial *social = &m_socialMap[guid]; + PlayerSocial* social = &_socialMap[guid]; social->SetPlayerGUID(guid); - if (!result) - return social; - - ObjectGuid friendGuid; - uint8 flags = 0; - std::string note = ""; - - do + if (result) { - Field* fields = result->Fetch(); - - friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); - flags = fields[1].GetUInt8(); - note = fields[2].GetString(); + do + { + Field* fields = result->Fetch(); - social->m_playerSocialMap[friendGuid] = FriendInfo(flags, note); + ObjectGuid friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt64()); - // client's friends list and ignore list limit - if (social->m_playerSocialMap.size() >= (SOCIALMGR_FRIEND_LIMIT + SOCIALMGR_IGNORE_LIMIT)) - break; + uint8 flag = fields[1].GetUInt8(); + social->_playerSocialMap[friendGuid] = FriendInfo(flag, fields[2].GetString()); + } + while (result->NextRow()); } - while (result->NextRow()); return social; } diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index 8f389d4afdf..d4ac04b08ed 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -23,10 +23,7 @@ #include "Common.h" #include "ObjectGuid.h" -class SocialMgr; -class PlayerSocial; class Player; -class WorldPacket; enum FriendStatus { @@ -42,7 +39,9 @@ enum SocialFlag SOCIAL_FLAG_FRIEND = 0x01, SOCIAL_FLAG_IGNORED = 0x02, SOCIAL_FLAG_MUTED = 0x04, // guessed - SOCIAL_FLAG_UNK = 0x08 // Unknown - does not appear to be RaF + SOCIAL_FLAG_UNK = 0x08, // Unknown - does not appear to be RaF + + SOCIAL_FLAG_ALL = SOCIAL_FLAG_FRIEND | SOCIAL_FLAG_IGNORED | SOCIAL_FLAG_MUTED }; struct FriendInfo @@ -61,11 +60,8 @@ struct FriendInfo { } }; -typedef std::map<ObjectGuid, FriendInfo> PlayerSocialMap; -typedef std::map<ObjectGuid, PlayerSocial> SocialMap; - /// Results of friend related commands -enum FriendsResult +enum FriendsResult : uint8 { FRIEND_DB_ERROR = 0x00, FRIEND_LIST_FULL = 0x01, @@ -92,39 +88,51 @@ enum FriendsResult FRIEND_MUTE_ADDED = 0x16, FRIEND_MUTE_REMOVED = 0x17, FRIEND_MUTE_AMBIGUOUS = 0x18, // That name is ambiguous, type more of the player's server name - FRIEND_UNK7 = 0x19, // no message at client - FRIEND_UNKNOWN = 0x1A // Unknown friend response from server + FRIEND_UNK1 = 0x19, // no message at client + FRIEND_UNK2 = 0x1A, + FRIEND_UNK3 = 0x1B, + FRIEND_UNKNOWN = 0x1C // Unknown friend response from server }; -#define SOCIALMGR_FRIEND_LIMIT 50 -#define SOCIALMGR_IGNORE_LIMIT 50 +#define SOCIALMGR_FRIEND_LIMIT 50u +#define SOCIALMGR_IGNORE_LIMIT 50u class PlayerSocial { friend class SocialMgr; + public: // adding/removing - bool AddToSocialList(ObjectGuid const& friend_guid, bool ignore); - void RemoveFromSocialList(ObjectGuid const& friend_guid, bool ignore); - void SetFriendNote(ObjectGuid const& friendGuid, std::string note); + bool AddToSocialList(ObjectGuid const& guid, SocialFlag flag); + void RemoveFromSocialList(ObjectGuid const& guid, SocialFlag flag); + void SetFriendNote(ObjectGuid const& guid, std::string const& note); + // Packet send's - void SendSocialList(Player* player); + void SendSocialList(Player* player, uint32 flags); + // Misc - bool HasFriend(ObjectGuid const& friend_guid); - bool HasIgnore(ObjectGuid const& ignore_guid); - ObjectGuid const& GetPlayerGUID() const { return m_playerGUID; } - void SetPlayerGUID(ObjectGuid const& guid) { m_playerGUID = guid; } + bool HasFriend(ObjectGuid const& friendGuid); + bool HasIgnore(ObjectGuid const& ignoreGuid); + + ObjectGuid const& GetPlayerGUID() const { return _playerGUID; } + void SetPlayerGUID(ObjectGuid const& guid) { _playerGUID = guid; } + uint32 GetNumberOfSocialsWithFlag(SocialFlag flag); + private: - PlayerSocialMap m_playerSocialMap; - ObjectGuid m_playerGUID; + bool _HasContact(ObjectGuid const& guid, SocialFlag flags); + + typedef std::map<ObjectGuid, FriendInfo> PlayerSocialMap; + PlayerSocialMap _playerSocialMap; + + ObjectGuid _playerGUID; }; class SocialMgr { private: - SocialMgr(); - ~SocialMgr(); + SocialMgr() { } + ~SocialMgr() { } public: static SocialMgr* instance() @@ -134,18 +142,22 @@ class SocialMgr } // Misc - void RemovePlayerSocial(ObjectGuid const& guid) { m_socialMap.erase(guid); } + void RemovePlayerSocial(ObjectGuid const& guid) { _socialMap.erase(guid); } + + void GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo& friendInfo); + + // Packet send's + void SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast = false); + void BroadcastToFriendListers(Player* player, WorldPacket const* packet); - void GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo &friendInfo); - // Packet management - void MakeFriendStatusPacket(FriendsResult result, ObjectGuid const& friend_guid, WorldPacket* data); - void SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friend_guid, bool broadcast); - void BroadcastToFriendListers(Player* player, WorldPacket* packet); // Loading - PlayerSocial *LoadFromDB(PreparedQueryResult result, ObjectGuid const& guid); + PlayerSocial* LoadFromDB(PreparedQueryResult result, ObjectGuid const& guid); + private: - SocialMap m_socialMap; + typedef std::map<ObjectGuid, PlayerSocial> SocialMap; + SocialMap _socialMap; }; #define sSocialMgr SocialMgr::instance() + #endif |
