TrinityCore
SocialMgr.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __TRINITY_SOCIALMGR_H
19#define __TRINITY_SOCIALMGR_H
20
21#include "DatabaseEnvFwd.h"
22#include "Common.h"
23#include "ObjectGuid.h"
24#include <map>
25
26class Player;
27class WorldPacket;
28
30{
36};
37
39{
42 SOCIAL_FLAG_MUTED = 0x04, // guessed
43 SOCIAL_FLAG_UNK = 0x08, // Unknown - does not appear to be RaF
44
46};
47
49{
56 std::string Note;
57
59 { }
60
61 FriendInfo(ObjectGuid const& accountGuid, uint8 flags, std::string const& note) : WowAccountGuid(accountGuid), Status(FRIEND_STATUS_OFFLINE),
62 Flags(flags), Area(0), Level(0), Class(0), Note(note)
63 { }
64};
65
68{
86 FRIEND_IGNORE_AMBIGUOUS = 0x11, // That name is ambiguous, type more of the player's server name
93 FRIEND_MUTE_AMBIGUOUS = 0x18, // That name is ambiguous, type more of the player's server name
94 FRIEND_UNK1 = 0x19, // no message at client
97 FRIEND_UNKNOWN = 0x1C // Unknown friend response from server
98};
99
100#define SOCIALMGR_FRIEND_LIMIT 50u
101#define SOCIALMGR_IGNORE_LIMIT 50u
102
104{
105 friend class SocialMgr;
106
107 public:
108 // adding/removing
109 bool AddToSocialList(ObjectGuid const& guid, ObjectGuid const& accountGuid, SocialFlag flag);
110 void RemoveFromSocialList(ObjectGuid const& guid, SocialFlag flag);
111 void SetFriendNote(ObjectGuid const& guid, std::string const& note);
112
113 // Packet send's
114 void SendSocialList(Player* player, uint32 flags);
115
116 // Misc
117 bool HasFriend(ObjectGuid const& friendGuid);
118 bool HasIgnore(ObjectGuid const& ignoreGuid, ObjectGuid const& ignoreAccountGuid);
119
120 ObjectGuid const& GetPlayerGUID() const { return _playerGUID; }
121 void SetPlayerGUID(ObjectGuid const& guid) { _playerGUID = guid; }
122
123 uint32 GetNumberOfSocialsWithFlag(SocialFlag flag);
124
125 private:
126 bool _HasContact(ObjectGuid const& guid, SocialFlag flags);
127
128 typedef std::map<ObjectGuid, FriendInfo> PlayerSocialMap;
131
133};
134
136{
137 private:
140
141 public:
142 static SocialMgr* instance();
143
144 // Misc
145 void RemovePlayerSocial(ObjectGuid const& guid) { _socialMap.erase(guid); }
146
147 static void GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo& friendInfo);
148
149 // Packet send's
150 void SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast = false);
151 void BroadcastToFriendListers(Player* player, WorldPacket const* packet);
152
153 // Loading
155
156 private:
157 typedef std::map<ObjectGuid, PlayerSocial> SocialMap;
159};
160
161#define sSocialMgr SocialMgr::instance()
162
163#endif
std::shared_ptr< PreparedResultSet > PreparedQueryResult
#define TC_GAME_API
Definition: Define.h:123
uint8_t uint8
Definition: Define.h:144
uint32_t uint32
Definition: Define.h:142
uint16 flags
Definition: DisableMgr.cpp:49
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition: ObjectGuid.h:396
FriendsResult
Results of friend related commands.
Definition: SocialMgr.h:68
@ FRIEND_IGNORE_FULL
Definition: SocialMgr.h:80
@ FRIEND_IGNORE_REMOVED
Definition: SocialMgr.h:85
@ FRIEND_UNK1
Definition: SocialMgr.h:94
@ FRIEND_ONLINE
Definition: SocialMgr.h:71
@ FRIEND_ENEMY
Definition: SocialMgr.h:79
@ FRIEND_ALREADY
Definition: SocialMgr.h:77
@ FRIEND_ADDED_OFFLINE
Definition: SocialMgr.h:76
@ FRIEND_NOT_FOUND
Definition: SocialMgr.h:73
@ FRIEND_MUTE_FULL
Definition: SocialMgr.h:87
@ FRIEND_DB_ERROR
Definition: SocialMgr.h:69
@ FRIEND_ADDED_ONLINE
Definition: SocialMgr.h:75
@ FRIEND_IGNORE_AMBIGUOUS
Definition: SocialMgr.h:86
@ FRIEND_IGNORE_ADDED
Definition: SocialMgr.h:84
@ FRIEND_UNK3
Definition: SocialMgr.h:96
@ FRIEND_MUTE_REMOVED
Definition: SocialMgr.h:92
@ FRIEND_IGNORE_NOT_FOUND
Definition: SocialMgr.h:82
@ FRIEND_MUTE_NOT_FOUND
Definition: SocialMgr.h:89
@ FRIEND_MUTE_ADDED
Definition: SocialMgr.h:91
@ FRIEND_UNK2
Definition: SocialMgr.h:95
@ FRIEND_IGNORE_SELF
Definition: SocialMgr.h:81
@ FRIEND_IGNORE_ALREADY
Definition: SocialMgr.h:83
@ FRIEND_MUTE_SELF
Definition: SocialMgr.h:88
@ FRIEND_SELF
Definition: SocialMgr.h:78
@ FRIEND_REMOVED
Definition: SocialMgr.h:74
@ FRIEND_MUTE_AMBIGUOUS
Definition: SocialMgr.h:93
@ FRIEND_OFFLINE
Definition: SocialMgr.h:72
@ FRIEND_LIST_FULL
Definition: SocialMgr.h:70
@ FRIEND_UNKNOWN
Definition: SocialMgr.h:97
@ FRIEND_MUTE_ALREADY
Definition: SocialMgr.h:90
FriendStatus
Definition: SocialMgr.h:30
@ FRIEND_STATUS_RAF
Definition: SocialMgr.h:35
@ FRIEND_STATUS_AFK
Definition: SocialMgr.h:33
@ FRIEND_STATUS_DND
Definition: SocialMgr.h:34
@ FRIEND_STATUS_OFFLINE
Definition: SocialMgr.h:31
@ FRIEND_STATUS_ONLINE
Definition: SocialMgr.h:32
SocialFlag
Definition: SocialMgr.h:39
@ SOCIAL_FLAG_MUTED
Definition: SocialMgr.h:42
@ SOCIAL_FLAG_ALL
Definition: SocialMgr.h:45
@ SOCIAL_FLAG_FRIEND
Definition: SocialMgr.h:40
@ SOCIAL_FLAG_IGNORED
Definition: SocialMgr.h:41
@ SOCIAL_FLAG_UNK
Definition: SocialMgr.h:43
void SetPlayerGUID(ObjectGuid const &guid)
Definition: SocialMgr.h:121
ObjectGuid const & GetPlayerGUID() const
Definition: SocialMgr.h:120
GuidUnorderedSet _ignoredAccounts
Definition: SocialMgr.h:130
ObjectGuid _playerGUID
Definition: SocialMgr.h:132
PlayerSocialMap _playerSocialMap
Definition: SocialMgr.h:129
std::map< ObjectGuid, FriendInfo > PlayerSocialMap
Definition: SocialMgr.h:128
static SocialMgr * instance()
Definition: SocialMgr.cpp:194
std::map< ObjectGuid, PlayerSocial > SocialMap
Definition: SocialMgr.h:157
SocialMap _socialMap
Definition: SocialMgr.h:158
static void GetFriendInfo(Player *player, ObjectGuid const &friendGUID, FriendInfo &friendInfo)
Definition: SocialMgr.cpp:200
PlayerSocial * LoadFromDB(PreparedQueryResult result, ObjectGuid const &guid)
Definition: SocialMgr.cpp:290
void SendFriendStatus(Player *player, FriendsResult result, ObjectGuid const &friendGuid, bool broadcast=false)
Definition: SocialMgr.cpp:249
~SocialMgr()
Definition: SocialMgr.h:139
void RemovePlayerSocial(ObjectGuid const &guid)
Definition: SocialMgr.h:145
void BroadcastToFriendListers(Player *player, WorldPacket const *packet)
Definition: SocialMgr.cpp:263
FriendInfo()
Definition: SocialMgr.h:58
ObjectGuid WowAccountGuid
Definition: SocialMgr.h:50
FriendStatus Status
Definition: SocialMgr.h:51
FriendInfo(ObjectGuid const &accountGuid, uint8 flags, std::string const &note)
Definition: SocialMgr.h:61
uint8 Level
Definition: SocialMgr.h:54
uint8 Class
Definition: SocialMgr.h:55
std::string Note
Definition: SocialMgr.h:56
uint8 Flags
Definition: SocialMgr.h:52
uint32 Area
Definition: SocialMgr.h:53