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{
55 std::string Note;
56
59
60 FriendInfo(uint8 flags, std::string const& note) : Status(FRIEND_STATUS_OFFLINE), Flags(flags), Area(0), Level(0), Class(0), Note(note)
61 { }
62};
63
66{
84 FRIEND_IGNORE_AMBIGUOUS = 0x11, // That name is ambiguous, type more of the player's server name
91 FRIEND_MUTE_AMBIGUOUS = 0x18, // That name is ambiguous, type more of the player's server name
92 FRIEND_UNK1 = 0x19, // no message at client
95 FRIEND_UNKNOWN = 0x1C // Unknown friend response from server
96};
97
98#define SOCIALMGR_FRIEND_LIMIT 50u
99#define SOCIALMGR_IGNORE_LIMIT 50u
100
102{
103 friend class SocialMgr;
104
105 public:
106 PlayerSocial();
107 // adding/removing
108 bool AddToSocialList(ObjectGuid const& guid, SocialFlag flag);
109 void RemoveFromSocialList(ObjectGuid const& guid, SocialFlag flag);
110 void SetFriendNote(ObjectGuid const& guid, std::string const& note);
111
112 // Packet send's
113 void SendSocialList(Player* player, uint32 flags);
114
115 // Misc
116 bool HasFriend(ObjectGuid const& friendGuid);
117 bool HasIgnore(ObjectGuid const& ignoreGuid);
118
119 ObjectGuid const& GetPlayerGUID() const { return _playerGUID; }
120 void SetPlayerGUID(ObjectGuid const& guid) { _playerGUID = guid; }
121
122 uint32 GetNumberOfSocialsWithFlag(SocialFlag flag);
123
124 private:
125 bool _HasContact(ObjectGuid const& guid, SocialFlag flags);
126
127 typedef std::map<ObjectGuid, FriendInfo> PlayerSocialMap;
129
131};
132
134{
135 private:
138
139 public:
140 static SocialMgr* instance();
141
142 // Misc
143 void RemovePlayerSocial(ObjectGuid const& guid) { _socialMap.erase(guid); }
144
145 static void GetFriendInfo(Player* player, ObjectGuid const& friendGUID, FriendInfo& friendInfo);
146
147 // Packet send's
148 void SendFriendStatus(Player* player, FriendsResult result, ObjectGuid const& friendGuid, bool broadcast = false);
149 void BroadcastToFriendListers(Player* player, WorldPacket const* packet);
150
151 // Loading
153
154 private:
155 typedef std::map<ObjectGuid, PlayerSocial> SocialMap;
157};
158
159#define sSocialMgr SocialMgr::instance()
160
161#endif
std::shared_ptr< PreparedResultSet > PreparedQueryResult
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
uint32_t uint32
Definition Define.h:133
uint16 flags
FriendsResult
Results of friend related commands.
Definition SocialMgr.h:66
@ FRIEND_IGNORE_FULL
Definition SocialMgr.h:78
@ FRIEND_IGNORE_REMOVED
Definition SocialMgr.h:83
@ FRIEND_UNK1
Definition SocialMgr.h:92
@ FRIEND_ONLINE
Definition SocialMgr.h:69
@ FRIEND_ENEMY
Definition SocialMgr.h:77
@ FRIEND_ALREADY
Definition SocialMgr.h:75
@ FRIEND_ADDED_OFFLINE
Definition SocialMgr.h:74
@ FRIEND_NOT_FOUND
Definition SocialMgr.h:71
@ FRIEND_MUTE_FULL
Definition SocialMgr.h:85
@ FRIEND_DB_ERROR
Definition SocialMgr.h:67
@ FRIEND_ADDED_ONLINE
Definition SocialMgr.h:73
@ FRIEND_IGNORE_AMBIGUOUS
Definition SocialMgr.h:84
@ FRIEND_IGNORE_ADDED
Definition SocialMgr.h:82
@ FRIEND_UNK3
Definition SocialMgr.h:94
@ FRIEND_MUTE_REMOVED
Definition SocialMgr.h:90
@ FRIEND_IGNORE_NOT_FOUND
Definition SocialMgr.h:80
@ FRIEND_MUTE_NOT_FOUND
Definition SocialMgr.h:87
@ FRIEND_MUTE_ADDED
Definition SocialMgr.h:89
@ FRIEND_UNK2
Definition SocialMgr.h:93
@ FRIEND_IGNORE_SELF
Definition SocialMgr.h:79
@ FRIEND_IGNORE_ALREADY
Definition SocialMgr.h:81
@ FRIEND_MUTE_SELF
Definition SocialMgr.h:86
@ FRIEND_SELF
Definition SocialMgr.h:76
@ FRIEND_REMOVED
Definition SocialMgr.h:72
@ FRIEND_MUTE_AMBIGUOUS
Definition SocialMgr.h:91
@ FRIEND_OFFLINE
Definition SocialMgr.h:70
@ FRIEND_LIST_FULL
Definition SocialMgr.h:68
@ FRIEND_UNKNOWN
Definition SocialMgr.h:95
@ FRIEND_MUTE_ALREADY
Definition SocialMgr.h:88
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:120
ObjectGuid const & GetPlayerGUID() const
Definition SocialMgr.h:119
ObjectGuid _playerGUID
Definition SocialMgr.h:130
PlayerSocialMap _playerSocialMap
Definition SocialMgr.h:128
std::map< ObjectGuid, FriendInfo > PlayerSocialMap
Definition SocialMgr.h:127
static SocialMgr * instance()
std::map< ObjectGuid, PlayerSocial > SocialMap
Definition SocialMgr.h:155
SocialMap _socialMap
Definition SocialMgr.h:156
static void GetFriendInfo(Player *player, ObjectGuid const &friendGUID, FriendInfo &friendInfo)
PlayerSocial * LoadFromDB(PreparedQueryResult result, ObjectGuid const &guid)
void SendFriendStatus(Player *player, FriendsResult result, ObjectGuid const &friendGuid, bool broadcast=false)
void RemovePlayerSocial(ObjectGuid const &guid)
Definition SocialMgr.h:143
void BroadcastToFriendListers(Player *player, WorldPacket const *packet)
FriendInfo(uint8 flags, std::string const &note)
Definition SocialMgr.h:60
FriendStatus Status
Definition SocialMgr.h:50
uint8 Level
Definition SocialMgr.h:53
uint8 Class
Definition SocialMgr.h:54
std::string Note
Definition SocialMgr.h:55
uint8 Flags
Definition SocialMgr.h:51
uint32 Area
Definition SocialMgr.h:52