Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
SocialMgr.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SF_SOCIALMGR_H
7#define SF_SOCIALMGR_H
8
9#include "Common.h"
10#include "DatabaseEnv.h"
11#include "Platform/Singleton.h"
12
13class SocialMgr;
14class PlayerSocial;
15class Player;
16class WorldPacket;
17
26
28{
31 SOCIAL_FLAG_MUTED = 0x04, // guessed
32 SOCIAL_FLAG_UNK = 0x08 // Unknown - does not appear to be RaF
33};
34
36{
42 std::string Note;
43
46
47 FriendInfo(uint8 flags, std::string const& note) : Status(FRIEND_STATUS_OFFLINE), Flags(flags), Area(0), Level(0), Class(0), Note(note)
48 { }
49};
50
51typedef std::map<uint32, FriendInfo> PlayerSocialMap;
52typedef std::map<uint32, PlayerSocial> SocialMap;
53
56{
74 FRIEND_IGNORE_AMBIGUOUS = 0x11, // That name is ambiguous, type more of the player's server name
81 FRIEND_MUTE_AMBIGUOUS = 0x18, // That name is ambiguous, type more of the player's server name
82 FRIEND_UNK7 = 0x19, // no message at client
83 FRIEND_UNKNOWN = 0x1A // Unknown friend response from server
84};
85
86#define SOCIALMGR_FRIEND_LIMIT 100
87#define SOCIALMGR_IGNORE_LIMIT 50
88
90{
91 friend class SocialMgr;
92public:
94 // adding/removing
95 bool AddToSocialList(uint32 friend_guid, bool ignore);
96 void RemoveFromSocialList(uint32 friend_guid, bool ignore);
97 void SetFriendNote(uint32 friendGuid, std::string note);
98 // Packet send's
99 void SendSocialList(Player* player);
100 // Misc
101 bool HasFriend(uint32 friend_guid);
102 bool HasIgnore(uint32 ignore_guid);
104 void SetPlayerGUID(uint32 guid) { m_playerGUID = guid; }
106private:
109};
110
112{
113 friend class Skyfire::Singleton<SocialMgr, Skyfire::NullMutex>;
114
115private:
118
119public:
120 // Misc
121 void RemovePlayerSocial(uint32 guid) { m_socialMap.erase(guid); }
122
123 void GetFriendInfo(Player* player, uint32 friendGUID, FriendInfo& friendInfo);
124 // Packet management
125 void MakeFriendStatusPacket(FriendsResult result, uint32 friend_guid, WorldPacket* data);
126 void SendFriendStatus(Player* player, FriendsResult result, uint32 friend_guid, bool broadcast);
127 void BroadcastToFriendListers(Player* player, WorldPacket* packet);
128 // Loading
130private:
132};
133
134#define sSocialMgr Skyfire::Singleton<SocialMgr, Skyfire::NullMutex>::instance()
135#endif
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
FriendStatus
Definition SocialMgr.h:19
@ FRIEND_STATUS_RAF
Definition SocialMgr.h:24
@ FRIEND_STATUS_AFK
Definition SocialMgr.h:22
@ FRIEND_STATUS_DND
Definition SocialMgr.h:23
@ FRIEND_STATUS_OFFLINE
Definition SocialMgr.h:20
@ FRIEND_STATUS_ONLINE
Definition SocialMgr.h:21
std::map< uint32, FriendInfo > PlayerSocialMap
Definition SocialMgr.h:51
FriendsResult
Results of friend related commands.
Definition SocialMgr.h:56
@ FRIEND_IGNORE_FULL
Definition SocialMgr.h:68
@ FRIEND_IGNORE_REMOVED
Definition SocialMgr.h:73
@ FRIEND_ONLINE
Definition SocialMgr.h:59
@ FRIEND_ENEMY
Definition SocialMgr.h:67
@ FRIEND_ALREADY
Definition SocialMgr.h:65
@ FRIEND_ADDED_OFFLINE
Definition SocialMgr.h:64
@ FRIEND_NOT_FOUND
Definition SocialMgr.h:61
@ FRIEND_MUTE_FULL
Definition SocialMgr.h:75
@ FRIEND_DB_ERROR
Definition SocialMgr.h:57
@ FRIEND_ADDED_ONLINE
Definition SocialMgr.h:63
@ FRIEND_IGNORE_AMBIGUOUS
Definition SocialMgr.h:74
@ FRIEND_IGNORE_ADDED
Definition SocialMgr.h:72
@ FRIEND_MUTE_REMOVED
Definition SocialMgr.h:80
@ FRIEND_IGNORE_NOT_FOUND
Definition SocialMgr.h:70
@ FRIEND_MUTE_NOT_FOUND
Definition SocialMgr.h:77
@ FRIEND_MUTE_ADDED
Definition SocialMgr.h:79
@ FRIEND_IGNORE_SELF
Definition SocialMgr.h:69
@ FRIEND_IGNORE_ALREADY
Definition SocialMgr.h:71
@ FRIEND_MUTE_SELF
Definition SocialMgr.h:76
@ FRIEND_SELF
Definition SocialMgr.h:66
@ FRIEND_REMOVED
Definition SocialMgr.h:62
@ FRIEND_UNK7
Definition SocialMgr.h:82
@ FRIEND_MUTE_AMBIGUOUS
Definition SocialMgr.h:81
@ FRIEND_OFFLINE
Definition SocialMgr.h:60
@ FRIEND_LIST_FULL
Definition SocialMgr.h:58
@ FRIEND_UNKNOWN
Definition SocialMgr.h:83
@ FRIEND_MUTE_ALREADY
Definition SocialMgr.h:78
std::map< uint32, PlayerSocial > SocialMap
Definition SocialMgr.h:52
SocialFlag
Definition SocialMgr.h:28
@ SOCIAL_FLAG_MUTED
Definition SocialMgr.h:31
@ SOCIAL_FLAG_FRIEND
Definition SocialMgr.h:29
@ SOCIAL_FLAG_IGNORED
Definition SocialMgr.h:30
@ SOCIAL_FLAG_UNK
Definition SocialMgr.h:32
bool HasFriend(uint32 friend_guid)
void SetFriendNote(uint32 friendGuid, std::string note)
PlayerSocialMap m_playerSocialMap
Definition SocialMgr.h:107
uint32 GetPlayerGUID() const
Definition SocialMgr.h:103
bool AddToSocialList(uint32 friend_guid, bool ignore)
Definition SocialMgr.cpp:31
uint32 GetNumberOfSocialsWithFlag(SocialFlag flag)
Definition SocialMgr.cpp:21
void SetPlayerGUID(uint32 guid)
Definition SocialMgr.h:104
bool HasIgnore(uint32 ignore_guid)
friend class SocialMgr
Definition SocialMgr.h:91
void RemoveFromSocialList(uint32 friend_guid, bool ignore)
Definition SocialMgr.cpp:79
void SendSocialList(Player *player)
uint32 m_playerGUID
Definition SocialMgr.h:108
void SendFriendStatus(Player *player, FriendsResult result, uint32 friend_guid, bool broadcast)
SocialMap m_socialMap
Definition SocialMgr.h:131
void BroadcastToFriendListers(Player *player, WorldPacket *packet)
PlayerSocial * LoadFromDB(PreparedQueryResult result, uint32 guid)
void RemovePlayerSocial(uint32 guid)
Definition SocialMgr.h:121
void GetFriendInfo(Player *player, uint32 friendGUID, FriendInfo &friendInfo)
void MakeFriendStatusPacket(FriendsResult result, uint32 friend_guid, WorldPacket *data)
FriendInfo(uint8 flags, std::string const &note)
Definition SocialMgr.h:47
FriendStatus Status
Definition SocialMgr.h:37
uint8 Level
Definition SocialMgr.h:40
uint8 Class
Definition SocialMgr.h:41
std::string Note
Definition SocialMgr.h:42
uint8 Flags
Definition SocialMgr.h:38
uint32 Area
Definition SocialMgr.h:39