TrinityCore
Loading...
Searching...
No Matches
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
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
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:
111 PlayerSocial& operator=(PlayerSocial const&);
112 PlayerSocial& operator=(PlayerSocial&&) noexcept;
114
115 // adding/removing
116 bool AddToSocialList(ObjectGuid const& guid, ObjectGuid const& accountGuid, SocialFlag flag);
117 void RemoveFromSocialList(ObjectGuid const& guid, SocialFlag flag);
118 void SetFriendNote(ObjectGuid const& guid, std::string const& note);
119
120 // Packet send's
121 void SendSocialList(Player* player, uint32 flags);
122
123 // Misc
124 bool HasFriend(ObjectGuid const& friendGuid);
125 bool HasIgnore(ObjectGuid const& ignoreGuid, ObjectGuid const& ignoreAccountGuid);
126
127 ObjectGuid const& GetPlayerGUID() const { return _playerGUID; }
128 void SetPlayerGUID(ObjectGuid const& guid) { _playerGUID = guid; }
129
130 uint32 GetNumberOfSocialsWithFlag(SocialFlag flag);
131
132 private:
133 bool _HasContact(ObjectGuid const& guid, SocialFlag flags);
134
135 typedef std::map<ObjectGuid, FriendInfo> PlayerSocialMap;
138
140};
141
143{
144 private:
147
148 public:
149 SocialMgr(SocialMgr const&) = delete;
150 SocialMgr(SocialMgr&&) = delete;
151 SocialMgr& operator=(SocialMgr const&) = delete;
153
154 static SocialMgr* instance();
155
156 // Misc
157 void RemovePlayerSocial(ObjectGuid const& guid) { _socialMap.erase(guid); }
158
159 static void GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo& friendInfo);
160
161 // Packet send's
162 void SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast = false);
163 void BroadcastToFriendListers(Player* player, WorldPacket const* packet);
164
165 // Loading
167
168 private:
169 typedef std::map<ObjectGuid, PlayerSocial> SocialMap;
171};
172
173#define sSocialMgr SocialMgr::instance()
174
175#endif
std::shared_ptr< PreparedResultSet > PreparedQueryResult
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
uint16 flags
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition ObjectGuid.h:435
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:128
GuidUnorderedSet _ignoredAccounts
Definition SocialMgr.h:137
ObjectGuid _playerGUID
Definition SocialMgr.h:139
PlayerSocialMap _playerSocialMap
Definition SocialMgr.h:136
PlayerSocial(PlayerSocial const &)
std::map< ObjectGuid, FriendInfo > PlayerSocialMap
Definition SocialMgr.h:135
PlayerSocial(PlayerSocial &&) noexcept
SocialMgr(SocialMgr const &)=delete
static SocialMgr * instance()
std::map< ObjectGuid, PlayerSocial > SocialMap
Definition SocialMgr.h:169
SocialMap _socialMap
Definition SocialMgr.h:170
static void GetFriendInfo(Player *player, ObjectGuid const &friendGUID, FriendInfo &friendInfo)
SocialMgr(SocialMgr &&)=delete
PlayerSocial * LoadFromDB(PreparedQueryResult result, ObjectGuid const &guid)
SocialMgr & operator=(SocialMgr const &)=delete
void SendFriendStatus(Player *player, FriendsResult result, ObjectGuid const &friendGuid, bool broadcast=false)
SocialMgr & operator=(SocialMgr &&)=delete
void RemovePlayerSocial(ObjectGuid const &guid)
Definition SocialMgr.h:157
void BroadcastToFriendListers(Player *player, WorldPacket const *packet)
STL namespace.
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