Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
13
class
SocialMgr
;
14
class
PlayerSocial
;
15
class
Player
;
16
class
WorldPacket
;
17
18
enum
FriendStatus
19
{
20
FRIEND_STATUS_OFFLINE
= 0x00,
21
FRIEND_STATUS_ONLINE
= 0x01,
22
FRIEND_STATUS_AFK
= 0x02,
23
FRIEND_STATUS_DND
= 0x04,
24
FRIEND_STATUS_RAF
= 0x08
25
};
26
27
enum
SocialFlag
28
{
29
SOCIAL_FLAG_FRIEND
= 0x01,
30
SOCIAL_FLAG_IGNORED
= 0x02,
31
SOCIAL_FLAG_MUTED
= 0x04,
// guessed
32
SOCIAL_FLAG_UNK
= 0x08
// Unknown - does not appear to be RaF
33
};
34
35
struct
FriendInfo
36
{
37
FriendStatus
Status
;
38
uint8
Flags
;
39
uint32
Area
;
40
uint8
Level
;
41
uint8
Class
;
42
std::string
Note
;
43
44
FriendInfo
() :
Status
(
FRIEND_STATUS_OFFLINE
),
Flags
(0),
Area
(0),
Level
(0),
Class
(0),
Note
()
45
{ }
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
51
typedef
std::map<uint32, FriendInfo>
PlayerSocialMap
;
52
typedef
std::map<uint32, PlayerSocial>
SocialMap
;
53
55
enum
FriendsResult
56
{
57
FRIEND_DB_ERROR
= 0x00,
58
FRIEND_LIST_FULL
= 0x01,
59
FRIEND_ONLINE
= 0x02,
60
FRIEND_OFFLINE
= 0x03,
61
FRIEND_NOT_FOUND
= 0x04,
62
FRIEND_REMOVED
= 0x05,
63
FRIEND_ADDED_ONLINE
= 0x06,
64
FRIEND_ADDED_OFFLINE
= 0x07,
65
FRIEND_ALREADY
= 0x08,
66
FRIEND_SELF
= 0x09,
67
FRIEND_ENEMY
= 0x0A,
68
FRIEND_IGNORE_FULL
= 0x0B,
69
FRIEND_IGNORE_SELF
= 0x0C,
70
FRIEND_IGNORE_NOT_FOUND
= 0x0D,
71
FRIEND_IGNORE_ALREADY
= 0x0E,
72
FRIEND_IGNORE_ADDED
= 0x0F,
73
FRIEND_IGNORE_REMOVED
= 0x10,
74
FRIEND_IGNORE_AMBIGUOUS
= 0x11,
// That name is ambiguous, type more of the player's server name
75
FRIEND_MUTE_FULL
= 0x12,
76
FRIEND_MUTE_SELF
= 0x13,
77
FRIEND_MUTE_NOT_FOUND
= 0x14,
78
FRIEND_MUTE_ALREADY
= 0x15,
79
FRIEND_MUTE_ADDED
= 0x16,
80
FRIEND_MUTE_REMOVED
= 0x17,
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
89
class
PlayerSocial
90
{
91
friend
class
SocialMgr
;
92
public
:
93
PlayerSocial
();
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);
103
uint32
GetPlayerGUID
()
const
{
return
m_playerGUID
; }
104
void
SetPlayerGUID
(
uint32
guid) {
m_playerGUID
= guid; }
105
uint32
GetNumberOfSocialsWithFlag
(
SocialFlag
flag);
106
private
:
107
PlayerSocialMap
m_playerSocialMap
;
108
uint32
m_playerGUID
;
109
};
110
111
class
SocialMgr
112
{
113
friend
class
Skyfire::Singleton
<
SocialMgr
,
Skyfire
::NullMutex>;
114
115
private
:
116
SocialMgr
() { }
117
~SocialMgr
() { }
118
119
public
:
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
129
PlayerSocial
*
LoadFromDB
(
PreparedQueryResult
result,
uint32
guid);
130
private
:
131
SocialMap
m_socialMap
;
132
};
133
134
#define sSocialMgr Skyfire::Singleton<SocialMgr, Skyfire::NullMutex>::instance()
135
#endif
Common.h
DatabaseEnv.h
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
PreparedQueryResult
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition
QueryResult.h:94
Singleton.h
FriendStatus
FriendStatus
Definition
SocialMgr.h:19
FRIEND_STATUS_RAF
@ FRIEND_STATUS_RAF
Definition
SocialMgr.h:24
FRIEND_STATUS_AFK
@ FRIEND_STATUS_AFK
Definition
SocialMgr.h:22
FRIEND_STATUS_DND
@ FRIEND_STATUS_DND
Definition
SocialMgr.h:23
FRIEND_STATUS_OFFLINE
@ FRIEND_STATUS_OFFLINE
Definition
SocialMgr.h:20
FRIEND_STATUS_ONLINE
@ FRIEND_STATUS_ONLINE
Definition
SocialMgr.h:21
PlayerSocialMap
std::map< uint32, FriendInfo > PlayerSocialMap
Definition
SocialMgr.h:51
FriendsResult
FriendsResult
Results of friend related commands.
Definition
SocialMgr.h:56
FRIEND_IGNORE_FULL
@ FRIEND_IGNORE_FULL
Definition
SocialMgr.h:68
FRIEND_IGNORE_REMOVED
@ FRIEND_IGNORE_REMOVED
Definition
SocialMgr.h:73
FRIEND_ONLINE
@ FRIEND_ONLINE
Definition
SocialMgr.h:59
FRIEND_ENEMY
@ FRIEND_ENEMY
Definition
SocialMgr.h:67
FRIEND_ALREADY
@ FRIEND_ALREADY
Definition
SocialMgr.h:65
FRIEND_ADDED_OFFLINE
@ FRIEND_ADDED_OFFLINE
Definition
SocialMgr.h:64
FRIEND_NOT_FOUND
@ FRIEND_NOT_FOUND
Definition
SocialMgr.h:61
FRIEND_MUTE_FULL
@ FRIEND_MUTE_FULL
Definition
SocialMgr.h:75
FRIEND_DB_ERROR
@ FRIEND_DB_ERROR
Definition
SocialMgr.h:57
FRIEND_ADDED_ONLINE
@ FRIEND_ADDED_ONLINE
Definition
SocialMgr.h:63
FRIEND_IGNORE_AMBIGUOUS
@ FRIEND_IGNORE_AMBIGUOUS
Definition
SocialMgr.h:74
FRIEND_IGNORE_ADDED
@ FRIEND_IGNORE_ADDED
Definition
SocialMgr.h:72
FRIEND_MUTE_REMOVED
@ FRIEND_MUTE_REMOVED
Definition
SocialMgr.h:80
FRIEND_IGNORE_NOT_FOUND
@ FRIEND_IGNORE_NOT_FOUND
Definition
SocialMgr.h:70
FRIEND_MUTE_NOT_FOUND
@ FRIEND_MUTE_NOT_FOUND
Definition
SocialMgr.h:77
FRIEND_MUTE_ADDED
@ FRIEND_MUTE_ADDED
Definition
SocialMgr.h:79
FRIEND_IGNORE_SELF
@ FRIEND_IGNORE_SELF
Definition
SocialMgr.h:69
FRIEND_IGNORE_ALREADY
@ FRIEND_IGNORE_ALREADY
Definition
SocialMgr.h:71
FRIEND_MUTE_SELF
@ FRIEND_MUTE_SELF
Definition
SocialMgr.h:76
FRIEND_SELF
@ FRIEND_SELF
Definition
SocialMgr.h:66
FRIEND_REMOVED
@ FRIEND_REMOVED
Definition
SocialMgr.h:62
FRIEND_UNK7
@ FRIEND_UNK7
Definition
SocialMgr.h:82
FRIEND_MUTE_AMBIGUOUS
@ FRIEND_MUTE_AMBIGUOUS
Definition
SocialMgr.h:81
FRIEND_OFFLINE
@ FRIEND_OFFLINE
Definition
SocialMgr.h:60
FRIEND_LIST_FULL
@ FRIEND_LIST_FULL
Definition
SocialMgr.h:58
FRIEND_UNKNOWN
@ FRIEND_UNKNOWN
Definition
SocialMgr.h:83
FRIEND_MUTE_ALREADY
@ FRIEND_MUTE_ALREADY
Definition
SocialMgr.h:78
SocialMap
std::map< uint32, PlayerSocial > SocialMap
Definition
SocialMgr.h:52
SocialFlag
SocialFlag
Definition
SocialMgr.h:28
SOCIAL_FLAG_MUTED
@ SOCIAL_FLAG_MUTED
Definition
SocialMgr.h:31
SOCIAL_FLAG_FRIEND
@ SOCIAL_FLAG_FRIEND
Definition
SocialMgr.h:29
SOCIAL_FLAG_IGNORED
@ SOCIAL_FLAG_IGNORED
Definition
SocialMgr.h:30
SOCIAL_FLAG_UNK
@ SOCIAL_FLAG_UNK
Definition
SocialMgr.h:32
Player
Definition
Player.h:1289
PlayerSocial
Definition
SocialMgr.h:90
PlayerSocial::HasFriend
bool HasFriend(uint32 friend_guid)
Definition
SocialMgr.cpp:169
PlayerSocial::SetFriendNote
void SetFriendNote(uint32 friendGuid, std::string note)
Definition
SocialMgr.cpp:113
PlayerSocial::m_playerSocialMap
PlayerSocialMap m_playerSocialMap
Definition
SocialMgr.h:107
PlayerSocial::GetPlayerGUID
uint32 GetPlayerGUID() const
Definition
SocialMgr.h:103
PlayerSocial::AddToSocialList
bool AddToSocialList(uint32 friend_guid, bool ignore)
Definition
SocialMgr.cpp:31
PlayerSocial::GetNumberOfSocialsWithFlag
uint32 GetNumberOfSocialsWithFlag(SocialFlag flag)
Definition
SocialMgr.cpp:21
PlayerSocial::SetPlayerGUID
void SetPlayerGUID(uint32 guid)
Definition
SocialMgr.h:104
PlayerSocial::HasIgnore
bool HasIgnore(uint32 ignore_guid)
Definition
SocialMgr.cpp:177
PlayerSocial::SocialMgr
friend class SocialMgr
Definition
SocialMgr.h:91
PlayerSocial::PlayerSocial
PlayerSocial()
Definition
SocialMgr.cpp:18
PlayerSocial::RemoveFromSocialList
void RemoveFromSocialList(uint32 friend_guid, bool ignore)
Definition
SocialMgr.cpp:79
PlayerSocial::SendSocialList
void SendSocialList(Player *player)
Definition
SocialMgr.cpp:132
PlayerSocial::m_playerGUID
uint32 m_playerGUID
Definition
SocialMgr.h:108
Skyfire::Singleton
Definition
Singleton.h:15
SocialMgr
Definition
SocialMgr.h:112
SocialMgr::SendFriendStatus
void SendFriendStatus(Player *player, FriendsResult result, uint32 friend_guid, bool broadcast)
Definition
SocialMgr.cpp:236
SocialMgr::m_socialMap
SocialMap m_socialMap
Definition
SocialMgr.h:131
SocialMgr::SocialMgr
SocialMgr()
Definition
SocialMgr.h:116
SocialMgr::BroadcastToFriendListers
void BroadcastToFriendListers(Player *player, WorldPacket *packet)
Definition
SocialMgr.cpp:272
SocialMgr::LoadFromDB
PlayerSocial * LoadFromDB(PreparedQueryResult result, uint32 guid)
Definition
SocialMgr.cpp:300
SocialMgr::RemovePlayerSocial
void RemovePlayerSocial(uint32 guid)
Definition
SocialMgr.h:121
SocialMgr::GetFriendInfo
void GetFriendInfo(Player *player, uint32 friendGUID, FriendInfo &friendInfo)
Definition
SocialMgr.cpp:185
SocialMgr::MakeFriendStatusPacket
void MakeFriendStatusPacket(FriendsResult result, uint32 friend_guid, WorldPacket *data)
Definition
SocialMgr.cpp:229
SocialMgr::~SocialMgr
~SocialMgr()
Definition
SocialMgr.h:117
WorldPacket
Definition
WorldPacket.h:16
Skyfire
Definition
AuthPatchTransfer.h:12
FriendInfo
Definition
SocialMgr.h:36
FriendInfo::FriendInfo
FriendInfo(uint8 flags, std::string const ¬e)
Definition
SocialMgr.h:47
FriendInfo::FriendInfo
FriendInfo()
Definition
SocialMgr.h:44
FriendInfo::Status
FriendStatus Status
Definition
SocialMgr.h:37
FriendInfo::Level
uint8 Level
Definition
SocialMgr.h:40
FriendInfo::Class
uint8 Class
Definition
SocialMgr.h:41
FriendInfo::Note
std::string Note
Definition
SocialMgr.h:42
FriendInfo::Flags
uint8 Flags
Definition
SocialMgr.h:38
FriendInfo::Area
uint32 Area
Definition
SocialMgr.h:39
src
server
game
Entities
Player
SocialMgr.h
Generated on
for Project SkyFire Core by
1.17.0