Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
GuildFinderMgr.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_GUILDFINDER_H
7#define SF_GUILDFINDER_H
8
9#include "Common.h"
10#include "GuildMgr.h"
11#include "Platform/Singleton.h"
12#include "World.h"
13
23
30
38
45
48{
49public:
51 {
52 _availability = settings.GetAvailability();
53 _classRoles = settings.GetClassRoles();
54 _interests = settings.GetInterests();
55 _guildId = settings.GetGuildId();
56 _playerGUID = settings.GetPlayerGUID();
57 _time = settings.GetSubmitTime();
58 }
59
60 MembershipRequest(uint32 playerGUID, uint32 guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string& comment, time_t submitTime) :
61 _comment(comment), _guildId(guildId), _playerGUID(playerGUID), _availability(availability),
62 _classRoles(classRoles), _interests(interests), _time(submitTime) {}
63
66
67 uint32 GetGuildId() const { return _guildId; }
68 uint32 GetPlayerGUID() const { return _playerGUID; }
70 uint8 GetClassRoles() const { return _classRoles; }
71 uint8 GetInterests() const { return _interests; }
72 uint8 GetClass() const { return sWorld->GetCharacterNameData(GetPlayerGUID())->m_class; }
73 uint8 GetLevel() const { return sWorld->GetCharacterNameData(GetPlayerGUID())->m_level; }
74 time_t GetSubmitTime() const { return _time; }
75 time_t GetExpiryTime() const { return time_t(_time + 30 * 24 * 3600); } // Adding 30 days
76 std::string const& GetComment() const { return _comment; }
77 std::string const& GetName() const { return sWorld->GetCharacterNameData(GetPlayerGUID())->m_name; }
78private:
79 std::string _comment;
80
83
87
88 time_t _time;
89};
90
93{
94public:
96 {
97 _guid = 0;
98 _roles = 0;
99 _availability = 0;
100 _interests = 0;
101 _level = 0;
102 }
103
104 LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level)
105 {
106 _guid = guid;
107 _roles = role;
108 _availability = availability;
109 _interests = interests;
110 _level = level;
111 }
112
113 LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : _comment(comment)
114 {
115 _guid = guid;
116 _roles = role;
117 _availability = availability;
118 _interests = interests;
119 _level = level;
120 }
121
122 LFGuildPlayer(LFGuildPlayer const& settings) : _comment(settings.GetComment())
123 {
124 _guid = settings.GetGUID();
125 _roles = settings.GetClassRoles();
126 _availability = settings.GetAvailability();
127 _interests = settings.GetInterests();
128 _level = settings.GetLevel();
129 }
130
131 uint32 GetGUID() const { return _guid; }
132 uint8 GetClassRoles() const { return _roles; }
134 uint8 GetInterests() const { return _interests; }
135 uint8 GetLevel() const { return _level; }
136 std::string const& GetComment() const { return _comment; }
137
138private:
139 std::string _comment;
145};
146
149{
150public:
152
153 LFGuildSettings(bool listed, TeamId team) : LFGuildPlayer(), _listed(listed), _team(team) {}
154
155 LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level) :
156 LFGuildPlayer(guid, role, availability, interests, level), _listed(listed), _team(team) {}
157
158 LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) :
159 LFGuildPlayer(guid, role, availability, interests, level, comment), _listed(listed), _team(team) {}
160
162 LFGuildPlayer(settings), _listed(settings.IsListed()), _team(settings.GetTeam()) {}
163
164
165 bool IsListed() const { return _listed; }
166 void SetListed(bool state) { _listed = state; }
167
168 TeamId GetTeam() const { return _team; }
169private:
172};
173
174typedef std::map<uint32 /* guildGuid */, LFGuildSettings> LFGuildStore;
175typedef std::map<uint32 /* guildGuid */, std::vector<MembershipRequest> > MembershipRequestStore;
176
178{
179 friend class Skyfire::Singleton<GuildFinderMgr, Skyfire::NullMutex>;
180
181private:
184
186
188
189 void LoadGuildSettings();
191
192public:
193 void LoadFromDB();
194
200 void SetGuildSettings(uint32 guildGuid, LFGuildSettings const& settings);
201
206 LFGuildSettings GetGuildSettings(uint32 guildGuid) { return _guildSettings[guildGuid]; }
207
213 void AddMembershipRequest(uint32 guildGuid, MembershipRequest const& request);
214
220
226 void RemoveMembershipRequest(uint32 playerId, uint32 guildId);
227
229 void DeleteGuild(uint32 guildId);
230
235 std::vector<MembershipRequest> GetAllMembershipRequestsForGuild(uint32 guildGuid) { return _membershipRequests[guildGuid]; }
236
241 std::list<MembershipRequest> GetAllMembershipRequestsForPlayer(uint32 playerGuid);
242
249
251 bool HasRequest(uint32 playerId, uint32 guildId);
252
255
256 void SendApplicantListUpdate(Guild& guild);
258};
259
260#define sGuildFinderMgr Skyfire::Singleton<GuildFinderMgr, Skyfire::NullMutex>::instance()
261
262#endif // __SKYFIRE_GUILDFINDER_H
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
GuildFinderOptionsInterest
@ INTEREST_ROLE_PLAYING
@ INTEREST_QUESTING
@ INTEREST_RAIDS
@ INTEREST_PVP
@ ALL_INTERESTS
@ INTEREST_DUNGEONS
GuildFinderOptionsLevel
@ MAX_FINDER_LEVEL
@ ALL_GUILDFINDER_LEVELS
@ ANY_FINDER_LEVEL
std::map< uint32, std::vector< MembershipRequest > > MembershipRequestStore
std::map< uint32, LFGuildSettings > LFGuildStore
GuildFinderOptionsRoles
@ GUILDFINDER_ROLE_TANK
@ GUILDFINDER_ROLE_HEALER
@ GUILDFINDER_ALL_ROLES
@ GUILDFINDER_ROLE_DPS
GuildFinderOptionsAvailability
@ AVAILABILITY_WEEKENDS
@ AVAILABILITY_WEEKDAYS
@ AVAILABILITY_ALWAYS
TeamId
@ TEAM_ALLIANCE
void SetGuildSettings(uint32 guildGuid, LFGuildSettings const &settings)
Stores guild settings and begins an asynchronous database insert.
void LoadMembershipRequests()
MembershipRequestStore _membershipRequests
void RemoveMembershipRequest(uint32 playerId, uint32 guildId)
Removes a membership request to a guild.
void AddMembershipRequest(uint32 guildGuid, MembershipRequest const &request)
Files a membership request to a guild.
bool HasRequest(uint32 playerId, uint32 guildId)
Provided a player DB guid and a guild DB guid, determines if a pending request is filed with these ke...
LFGuildStore GetGuildsMatchingSetting(LFGuildPlayer &settings, TeamId faction)
Returns a store of guilds matching the settings provided, using bitmask operators.
uint8 CountRequestsFromPlayer(uint32 playerId)
Counts the amount of pending membership requests, given the player's db guid.
void SendMembershipRequestListUpdate(Player &player)
LFGuildSettings GetGuildSettings(uint32 guildGuid)
Returns settings for a guild.
std::list< MembershipRequest > GetAllMembershipRequestsForPlayer(uint32 playerGuid)
Returns a list of membership requests for a player.
void RemoveAllMembershipRequestsFromPlayer(uint32 playerId)
Removes all membership request from a player.
std::vector< MembershipRequest > GetAllMembershipRequestsForGuild(uint32 guildGuid)
Returns a set of membership requests for a guild.
LFGuildStore _guildSettings
void SendApplicantListUpdate(Guild &guild)
void DeleteGuild(uint32 guildId)
Wipes everything related to a guild. Used when that guild is disbanded.
Definition Guild.h:324
#define sWorld
Definition World.h:910
Holds all informations about a player's finder settings. NOT stored in database.
uint8 GetAvailability() const
std::string _comment
LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string &comment)
LFGuildPlayer(LFGuildPlayer const &settings)
LFGuildPlayer(uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level)
std::string const & GetComment() const
uint8 GetClassRoles() const
uint32 GetGUID() const
uint8 GetLevel() const
uint8 GetInterests() const
Holds settings for a guild in the finder system. Saved to database.
LFGuildSettings(bool listed, TeamId team)
LFGuildSettings(LFGuildSettings const &settings)
bool IsListed() const
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level)
TeamId GetTeam() const
LFGuildSettings(bool listed, TeamId team, uint32 guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string &comment)
void SetListed(bool state)
Holds all required informations about a membership request.
uint32 GetGuildId() const
uint8 GetClassRoles() const
uint8 GetClass() const
time_t GetSubmitTime() const
uint8 GetInterests() const
uint32 GetPlayerGUID() const
std::string const & GetComment() const
MembershipRequest(MembershipRequest const &settings)
time_t GetExpiryTime() const
uint8 GetAvailability() const
std::string _comment
uint8 GetLevel() const
MembershipRequest(uint32 playerGUID, uint32 guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string &comment, time_t submitTime)
std::string const & GetName() const